zoukankan      html  css  js  c++  java
  • celery 简单示例

    目录结构

     第一步  celery_task 里面的celery文件

    import time
    from celery import Celery
    # celery
    from celery.schedules import crontab
    
    # 将此文件celery启动   windows   celery worker -A celery_task --loglevel=info -P gevent
    # 将此文件celery启动   linux   celery worker -A celery_task --loglevel=info
    
    # 异步任务  Async Task
    # 定时任务  Celery Beat
    # 消息中间件 Broker
    # 任务执行单元  Celery Worker
    # 结果存储  Backend
    
    # 消息中间件 Broker
    broker = 'redis://192.168.10.10'
    # 结果存储  Backend
    backend = 'redis://192.168.10.10/0'
    
    app = Celery('my_task', broker=broker, backend=backend,
                 include=['celery_task.celery_task_one', 'celery_task.celery_task_two',
                          ])
    
    # 时区
    app.conf.timezone = 'Asia/Shanghai'
    # 是否使用UTC
    app.conf.enable_utc = False
    
    # 我要对beat任务生产做一个配置,这个配置的意思就是每10秒执行一次 celery_task.celery_task_one(10,10)
    
    app.conf.beat_schedule = {
        "each10s_task": {
            "task": "celery_task.celery_task_one.add",
            "schedule": 30,  # 每30秒钟执行一次    # 'schedule': timedelta(seconds=30),
            "args": (10, 10)
        },
        "each1m_task": {
            "task": "celery_task.celery_task_two.add_add",
            "schedule": crontab(minute='*/1'),  # 每一分钟执行一次
            "args": (10, 30)
        },
        "each24hours_task": {
            "task": "celery_task.celery_task_two.add",
            "schedule": crontab(),  # 每一分钟执行一次
            "args": (10, 100000)
        }
    }
    
    # 任务结果过期设置 `result_expires=3600' 。默认设置是1天,
    app.conf.update(
        result_expires=3600,
    )
    
    # 以上配置完成之后,还有一点非常重要
    # 不能直接创建Worker了,因为我们要执行周期任务,所以首先要先有一个任务的生产方
    # celery beat -A celery_task
    # celery worker -A celery_task -l INFO -P eventlet

    第二步 do_task

    from celery_task.celery_task_one import add as add1
    from celery_task.celery_task_two import add as add2
    from celery_task.celery import app
    
    from celery.schedules import crontab
    
    # 将任务交给Celery的Worker执行
    res = add1.delay(1, 3)
    
    print(res.id)
    
    res = add2.delay(1, 3)
    
    print(res.id)
    
    
    """
    Celery4
    新版的好处是,可以把定时任务和普通的任务一样单独定义了。多了 @app.on_after_configure.connect 这个装饰器,3版本是没有这个装饰器的。
    写代码
    单独再创建一个py文件,存放定时任务:
    
    链接:https://www.jianshu.com/p/c622f5f5d015
    """

    第三步 将所有任务 写在celery_task 下面  'celery_task.celery_task_one', 'celery_task.celery_task_two' 进行调取执行

    'celery_task.celery_task_one'

    from
    .celery import app import time @app.task def add(x, y): time.sleep(5) return x + y
    'celery_task.celery_task_two' 
    from
    .celery import app import time @app.task def add(x, y): time.sleep(5) return x * y @app.task def add_add(x, y): time.sleep(5) return x * y

       # 在 celery_task 目录下执行  是用来生产定时任务(app.conf.beat_schedule配置的)

    # celery beat -A celery_task

    -------------------------------------------------------------


    # 在
    celery_task 目录下执行,这个的目的是启动 worker , worker是用来执行,生产的任务
    # celery worker -A celery_task -l INFO -P eventlet
    # 将此文件celery启动   windows   celery worker -A celery_task --loglevel=info -P gevent
    # 将此文件celery启动   linux   celery worker -A celery_task --loglevel=info
     
    # 在  celery_task  目录下执行
  • 相关阅读:
    NotePad++与MinGw的第一次HelloWorld——C语言环境配置说明
    Debian7.5.0安装流程(VirtualBox虚拟机环境)
    NotePad++插件——Customize Toolbar
    NotePad++与MinGw的第一次HelloWorld
    Debian7.5.0安装流程(VirtualBox虚拟机环境)
    stm32f103cbt6 sd卡 移植fatfs 显示在e-ink屏幕上
    stm32f429i disc usb cdc vcp 虚拟串口 example project (CubeMX Hal)
    stm32 cubemx 工程生成报错
    clover 在win10下工作不正常
    proxifier 3.29 key
  • 原文地址:https://www.cnblogs.com/xiao-xue-di/p/13809521.html
Copyright © 2011-2022 走看看