簡體   English   中英

如何在 HUEY 動態周期任務中添加到期日期,就像在 celery 任務中一樣?

[英]How to add expiry date in HUEY dynamic periodic task just like in celery tasks?

有沒有辦法將到期日期添加到 Huey Dynamic 定期任務? 就像 celery 任務中有一個選項一樣 - “some_celery_task.apply_async(args=('foo',), expires=expiry_date)” 在創建任務時添加到期日期。

我想在創建 Huey Dynamic 定期任務時添加到期日期。 我使用了“撤銷”,它按預期工作,但我想在到期日之后完全停止任務而不是撤銷它。 當 Huey 動態周期性任務被撤銷時 - Huey 終端上會顯示消息,表明 huey function 被撤銷(只要 crontab 條件為真)。 (我在 Django 中使用 Huey)

(額外)我做了什么來滿足這個到期日期的需要 - 我創建了 function ,它返回 crontab 的 Days - Months 對:例如。 開始日期 = 2021-1-20, 結束日期 = 2021-6-14 然后 function 將返回 - Days_Month:[['20-31',1], ['*','2-5'], [' 1-14','6']] 然后我調用 Huey Dynamic 周期性任務(本例中調用了 3 次)。 (Days_Month function 將根據要求返回 Day-Month - Daily、Weekly、Monthly 或在 n 天后重復)

有一個更好的方法嗎? 感謝您的幫助。

最佳解決方案將取決於您需要這種具有特定結束日期的定期任務的功能的頻率,但理想的方法可能涉及您的數據庫。

我將創建一個數據庫 model (我們稱之為Job ),其中包含end_date字段、 next_execution_date字段和指示重復interval (如 x 天)的字段。

然后,您將使用 huey 創建一個每天運行的定期任務(如果您需要更精細的控制,甚至可以每小時/分鍾運行一次)。 每次運行此定期任務時,您都會對所有Job實例進行 go 並檢查它們的next_execution_date是否在過去。 如果是這樣,請啟動一個新的 Huey 任務,該任務實際上執行您需要為每個Job實例定期執行的功能。 成功后,您使用interval計算新的next_execution_date

因此,每當您想要一個具有新end_date的新Job時,您只需在 django 管理員中創建它(或為其創建一個界面),然后將next_execution_date設置為您希望它執行的第一個日期。

因此,您的最終解決方案將具有Job model 和兩個 huey 裝飾功能。 一個用於定期任務,僅檢查是否需要執行Job實例並更新它們的next_execution_date ,另一個用於實際執行每個Job實例的定期功能。 這樣,您不必進行任何手動取消,並且您只需要 1 個定期任務,該任務無限期地運行,但如果沒有需要運行的Job實例,則實際上不會執行任何操作。

注意:只有當您有多個此類任務並且您可能希望控制界面中的end_date時,這才是一種合理的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM