2016-03-23 50 views
1

假設有一個週期性任務計劃每小時運行一次。工作人員接收任務並開始處理。當任務正在處理時,celeryd進程(通過supervisord進行控制)重新啓動(supervisorctl全部重新啓動)。即使該任務從未完成執行,它也不會被重新執行。如何在芹菜中終止週期性任務?

如何立即重新排列週期性任務並防止多個版本的任務同時運行?

回答

0

有可能是做一個更好的方式,但你可以只使用週期任務隊列中創建一個常規的任務(例如,my_actual_task.defer(…)),這將直到它完成不從隊列中刪除(假設你正在使用acks_late)。

如果您不使用acks_late,可以嘗試放置大量任務,並在相應finally處放置一個my_actual_task.retry()

無論哪種方式,你通常應該避免殺死工人,而不要讓他們有機會完成他們正在做的事情。