2015-12-16 57 views
0

芹菜是否對任務有eta限制?我想在12天后執行方法foo,芹菜會有問題嗎?或者我需要配置任何芹菜設置這麼長的eta?限制在Python Celery eta?

next_run = datetime.now() + timedelta(days = 12) 
foo.apply_async(args=[], eta = next_run) 
+0

您是否嘗試過???好吧,你必須要有耐心

+0

在虛擬機中試一試 - 然後你可以修改系統時間而不會破壞東西 – scytale

+0

@brunodesthuilliers:是的,試過了..我想我會在12天內知道.. – ofey

回答

1

這取決於你所使用的經紀人和一些配置像visibility_timeout

當一個ETA設置的任務被排隊時,它會被一個工作者asap而不是ETA取回。工作人員將任務持續到ETA並執行。工作人員在處理任務時會a the經紀人;所以代理知道何時可以安全刪除任務消息。

有些經紀人,如Redis和SQS,認爲任務在工作人員未確認一段時間後會丟失,稱爲visibility_timeout。在這種情況下,它允許其他工作人員接收任務消息。回到你的案例,如果你使用Redis,默認visibility_timeout爲1小時,推遲12天的任務可能會多次執行任務,如12 * 24次,這取決於你的數量工人。

visibility_timeout增加到12天以上可能是誘人的。請注意,它會有效地禁用確認機制,該機制存在的原因很充分。

我建議你使用一個運行間隔爲visibility_timeout的cron任務來掃描應該很快執行的任務,並將它們排入實際的ETA。

參考文獻: