2017-07-11 42 views
1

您能解釋我必須使用什麼:task_reject_on_worker_losttask_acks_late以及它們有何不同? 爲什麼Celery在task_acks_late爲True的異常之後不會再次運行任務?Celery的task_reject_on_worker_lost和task_acks_late之間有什麼不同

芹菜文檔:

即使啓用task_acks_late,工作人員將確認任務時突然執行他們的工作進程退出

是什麼意思「突然退出」?會引發異常嗎?

當芹菜重任務時task_acks_lateTruetask_reject_on_worker_lostTrue

回答

1

如果您希望在異常後重試,可以將args傳遞給裝飾器。

@app.task(max_retries=10) 
def task(*args, **kwargs): 
    #stuff 

突然退出是指工作人員被殺而非例外。如果您使用task_acks_late,則工作人員將在任務結束時從隊列中移除項目,而不是開始。但是,如果工作進程被終止,即使任務未完成,任務仍會被確認。如果發生上述事件,task_reject_on_worker_lost將重新排隊消息,因此您不會丟失任務。

來源: http://docs.celeryproject.org/en/latest/userguide/configuration.html#std:setting-task_reject_on_worker_lost

http://docs.celeryproject.org/en/latest/userguide/configuration.html#task-acks-late

你應該能夠沒有問題同時使用這兩種設置。

相關問題