[英]How can I disable redelivery of tasks in celery (with redis)?
我是否可以配置 celery 以在工作人員非正常關閉的情況下放棄任務? 對我來說更重要的是任務不重復而不是總是交付。
如文檔中所述:
如果在 Visibility Timeout 內未確認任務,則該任務將重新交付給另一個工作人員並執行。
這會導致執行時間超過可見性超時的 ETA/倒計時/重試任務出現問題; 事實上,如果發生這種情況,它將再次執行,並在循環中再次執行。
因此,您必須增加可見性超時以匹配您計划使用的最長 ETA 的時間。
我的用例是我使用 1 天的visibility_timeout
,但在某些情況下這還不夠——我想在未來進一步安排任務。 “電源故障”或任何其他導致非正常關機的事件非常罕見,我可以接受任務被丟棄的情況,例如 0.01% 的情況。 此外,比預期晚 1 天執行的任務與根本沒有運行的任務一樣糟糕。
一種明顯的、hacky 的方法是將visibility_timeout
設置為 100 年。 有沒有更好的辦法?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.