2011-08-18 70 views
0

我有兩個不同的Django項目,說projAprojB,每個有不同的隊列,但相同的虛擬主機上運行自己的芹菜守護進程,projA有個任務taskA和projB有個任務taskB,我嘗試運行taskB from taskA eg芹菜result.get超時

@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一秒鐘內完成看,但任務A不斷等待結果和超時20秒

對於後端我的RabbitMQ後。

+0

這會警告不要啓動子任務,但是如果taskB正在完成,可能不是問題的原因: http://ask.github.com/celery/userguide/tasks.html#task-同步子任務 – SteveMc

+0

是的,它是警告可能的死鎖,但我有每個隊列7併發進程,並且只有1個任務,所以它不應該發生 –

回答

1

設置結果後端固定的問題

CELERY_RESULT_BACKEND = "amqp" 
CELERY_AMQP_TASK_RESULT_EXPIRES = 1000 

IMO如果結果後端沒有設置result.get應該拋出錯誤或-至少記錄警告

雖然芹菜2.3呢如此處所述的拋出錯誤https://github.com/ask/django-celery/issues/66