芹菜是否對任務有eta限制?我想在12天后執行方法foo
,芹菜會有問題嗎?或者我需要配置任何芹菜設置這麼長的eta?限制在Python Celery eta?
next_run = datetime.now() + timedelta(days = 12)
foo.apply_async(args=[], eta = next_run)
芹菜是否對任務有eta限制?我想在12天后執行方法foo
,芹菜會有問題嗎?或者我需要配置任何芹菜設置這麼長的eta?限制在Python Celery eta?
next_run = datetime.now() + timedelta(days = 12)
foo.apply_async(args=[], eta = next_run)
這取決於你所使用的經紀人和一些配置像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。
參考文獻:
您是否嘗試過???好吧,你必須要有耐心 –
在虛擬機中試一試 - 然後你可以修改系統時間而不會破壞東西 – scytale
@brunodesthuilliers:是的,試過了..我想我會在12天內知道.. – ofey