Django + CELERY_TASK_ROUTES不使用模块相对路径和通配符

时间:2018-04-02 18:38:42

标签: python redis queue celery django-celery

使用带有Django 1.11和Redis的Celery 4.1.0作为代理,具有以下抽象配置,

CELERY_IMPORTS = ('my_app.celery_tasks',)  # Can see the list of tasks in the workers log, so the import works.

CELERY_TASK_DEFAULT_QUEUE = 'default'
CELERY_TASK_QUEUES = (
    Queue('default', Exchange('default'), routing_key='default.#'),
    Queue('my-queue', Exchange('my-queue'), routing_key='my-queue.#'),
)

CELERY_TASK_ROUTES = {
    # 'my-celery-task': {'queue': "my-queue"},
    'my_app.celery_tasks.*': {'queue': "my-queue"},
}

运行2名工作人员从'default'和'my-queue'中使用任务。

my-celery-task @task中的一个名为my_app/celery_tasks.py,如果我取消注释,它会按预期路由到“我的队列” CELERY_TASK_ROUTES中的第一行。

但我需要的是将my_app/celery_tasks.py中定义的所有任务路由到'my-queue'。在此处docs之后,但任务仍然被路由到“默认”队列。有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

使用CELERY_ROUTES代替CELERY_TASK_ROUTES