0

我有两个不同的 django 项目说projAprojB,每个都有自己的芹菜守护进程在不同的队列上运行,但相同的虚拟主机,projA 有一个任务taskA,projB 有一个任务taskB,我尝试taskB从内部运行,taskA例如

@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 的日志中看到 taskB 在一秒钟内完成,但 taskA 继续等待结果并在 20 秒后超时

对于后端,我有rabbitmq。

4

1 回答 1

1

设置结果后端解决了问题

CELERY_RESULT_BACKEND = "amqp"
CELERY_AMQP_TASK_RESULT_EXPIRES = 1000 

IMO 如果未设置结果后端 result.get 应该抛出错误或至少记录警告

虽然 celery 2.3 确实抛出了这里描述的错误https://github.com/ask/django-celery/issues/66

于 2011-08-22T21:09:06.910 回答