我想将队列设置应用于链接任务。这是一个示例任务。
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
是否有任何使用并发模式和队列的芹菜工人的提示。