我有两个不同的django项目说projA
和projB
,每个都有自己的芹菜守护进程运行在单独的队列上,但相同的vhost, projA有一个任务taskA
和projB有一个任务taskB
,我尝试从taskA
内部运行taskB
,例如
@task(routing_key='taskA')
def taskA(event_id):
# do some work , then call taskB and wait for result
result = send_task('taskB',routing_key='taskB')
res = result.get(timeout=20)
我可以在projB的日志中看到taskkb在一秒钟内完成,但taskA一直在等待结果,并在20秒后超时
后端我有rabbitmq
设置结果后端修复了问题
CELERY_RESULT_BACKEND = "amqp"
CELERY_AMQP_TASK_RESULT_EXPIRES = 1000
如果结果后端没有设置结果,则IMO。Get应该抛出错误或至少记录一个警告
虽然芹菜2.3抛出错误描述这里https://github.com/ask/django-celery/issues/66