Celery的简单使用

生产者消费者模型(Celery)

基础使用
  1. 创建任务
from celery import Celery
app = Celery('demo', broker='redis://127.0.0.1/1', backend='redis://127.0.0.1/2')  # 使用redis作为broker和接受返回值
@app.task
def test_task():
    print('testing')
  1. 启动worker

celery -A tasks worker --loglevel=info

  1. 调用任务
from tasks import test_task
test_task.delay()
项目使用:
  1. 编写配置文件

    config.py

    RESULT_BACKEND='redis://127.0.0.1/2'
    BROKER_URL = 'redis://127.0.0.1/1'
    
  2. 获取配置参数

    import config
    app = Celery()
    app.config_from_object('config')
    
    # 自动搜索任务
    
    app.autodiscover_tasks(['test_task'])
    
  3. 调用任务

    test_task.delay(2, 2)

    test_task.apply_async((2, 2), queue='my_queue', countdown=10) # 发送到my_queue队列中10s后执行

    test_task.signatures(countdown=10).delay()

    group((test_task1.s(2, 2)), (test_task2.s(2, 2)))() # 执行一组任务

    chain(test_task1.s(2, 2) | test_task2.s(2, 2))() # 执行任务链,第一个任务结果传递给第二个任务

Celery支持AMQP(Advanced Message Queue)所有的路由功能
  1. 配置文件添加

    task_routes=({
        'proj.tasks.test_task1': {'queue': 'queue1'},
        'proj.tasks.test_task2': {'queue': 'queue1'},
        'proj.tasks.test_task3': {'queue': 'queue2'},
        },
    )
    
  2. 开启两个队列

    celery -A proj worker --loglevel=info -Q queue1
    celery -A proj worker --loglevel=info -Q queue2

    celery -A proj worker --loglevel=info -Q queue1,queue
    
  3. 调用

    test_task1.apply_async(queue='queue1')

    test_task1.delay() 
    test_task2.delay()
    test_task2.delay()
定时执行某任务(beat调度器)
  1. 添加配置信息

    beat_schedule = {
        'every-5-minute':
            {
                'task': 'proj.tasks.period_task',
                'schedule': 5.0,
                'args': (16, 16),
            },
        'add-every-monday-morning': {
            'task': 'proj.tasks.period_task',
            'schedule': crontab(hour=7, minute=30, day_of_week=1),
            'args': (16, 16),
        },
    
    }
    
  2. 开启beat服务

    celery -A proj beat -s /home/celery/var/run/celerybeat-schedule

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值