Celery 队列路由介绍

不使用配置文件

  • celery.py
from __future__ import absolute_import
from celery import Celery
from datetime import timedelta
from celery.schedules import crontab
from kombu import Queue
app = Celery('test_app', include=['celery_test.test_task'])
app.conf.task_queues = (
    Queue('task_1',routing_key="task_1"),
    Queue('task_2',routing_key="task_2")
)
app.conf.beat_schedule = {
    'crontab_task_1': {
        'task': 'celery_test.test_task.foo',
        'schedule': timedelta(seconds=10),
        'options': {'queue':'task_1'}
    },
}
app.conf.task_routes = {
                        'celery_test.test_task.bar': {'queue': 'task_2', 'routing_key':'task_2'},
                        }
  • test_task.py
from __future__ import absolute_import
from .celery import app
import time
@app.task
def foo():
    time.sleep(5)
    return "hello world"
@app.task
def bar():
    time.sleep(5)
    return "hi world"
  • 其他说明

使用配置文件

  • celery.py
from __future__ import absolute_import
from celery import Celery
from datetime import timedelta
from celery.schedules import crontab
app = Celery('test_app', include= ['celery_test.test_task'])
app.config_from_object('celery_test.config')
  • config.py
from kombu import Exchange, Queue
from datetime import timedelta
CELERY_QUEUES = (
    Queue("for_task_A", Exchange("for_task_A"), routing_key="task_a"),
    Queue("for_task_B", Exchange("for_task_B"), routing_key="task_a")
)
CELERYBEAT_SCHEDULE = {
    'crontab_task_1': {
        'task': 'celery_test.test_task.foo',
        'schedule': timedelta(seconds=5),
        'options': {'queue':'for_task_A'}
    },
}
CELERY_ROUTES = {
    'celery_test.test_task.bar':{"queue":"for_task_B","routing_key":"task_b"}
}
  • test_task.py
from __future__ import absolute_import
from .celery import app
import time
@app.task
def foo():
    time.sleep(5)
    return "hello world"
@app.task
def bar():
    time.sleep(5)
    return "hi world"

特殊说明

这里写图片描述

这里写图片描述

这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值