Celery result.get超时

时间:2011-08-18 16:44:44

标签: python celery django-celery

我有两个不同的django项目,例如projAprojB,每个项目都有自己的celery守护进程在不同的队列上运行但是同一个vhost,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。

1 个答案:

答案 0 :(得分:1)

设置结果后端修复了问题

CELERY_RESULT_BACKEND = "amqp"
CELERY_AMQP_TASK_RESULT_EXPIRES = 1000 

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

虽然芹菜2.3确实会抛出错误,如https://github.com/ask/django-celery/issues/66

所述