2013-04-03 127 views
2

我們的部署過程在進程列表中的所有芹菜過程中使用kill來重新啓動芹菜。芹菜工人丟失

有時我看到芹菜日誌中的「工人失蹤」。如果在發生這種情況時任務正在運行,任務是否會重新運行或將丟失?我們正在使用redis。

回答

3

基本上,你應該發送SIGTERM給每個芹菜工作者。 http://docs.celeryproject.org/en/latest/userguide/workers.html#stopping-the-worker

如果您想殺死您的進程並重新啓動任務,您可以設置ACK_LATE設置,如果worker不能成功完成任務並停止,將返回任務以查詢。 http://docs.celeryproject.org/en/latest/configuration.html?highlight=acks_late#celery-acks-late

+0

謝謝。我們正在運行一個超級老版本的芹菜,所以升級可能是一個好主意。我猜遲到的確認只和你的隊列一樣可靠。我們正在使用redis,因此在這裏切換到RabbitMQ可能是一個好主意。此外,我正在閱讀該頁面,該重試是一個選項與ACK_LATE,但是這個解決方案可能對我們有好處,因爲如果我們重新啓動芹菜,我們可能也會重新啓動django,所以不會有正在運行的應用程序來執行重試... –

+0

感謝您指出ACK_LATE。 – ChillarAnand