当worker是并发时,链式任务不会执行指定的队列

时间:2015-08-15 06:31:55

标签: python rabbitmq celery

我想将队列设置应用于链接任务。这是一个示例任务。

from celery import chain
from task.calc import *

def execute(some, some2):
    return chain(add_1.s(some, some2, 10), add_2.s).apply_async()

这里的celeryconfig指定队列设置。

class MyRouter():
    def route_for_task(self, task, args=None, kwargs=None):
        if 'task.calc' in task:
            return {
                'queue': 'calc',
                'exchange': 'calc',
                'exchange_type': 'topic',
                'routing_key': 'direct'
            }

CELERY_QUEUES = (
    Queue('calc', Exchange('calc', type='topic'), routing_key='calc'),
)
CELERY_ROUTES = (
    MyRouter()
)

当我使用以下命令运行芹菜工作时,链接任务正确执行。

$ celery worker -A task -P eventlet -Q calc

但是,当我使用并发工作者运行芹菜工作者时,链接任务不会被执行,而是仅执行第一个任务(task.calc.add_1)。

$ celery worker -A task -P eventlet -Q calc -c 32

是否有任何使用并发模式和队列的芹菜工人的提示。

0 个答案:

没有答案