自動化

排程

循環工作的每小時、每日、每週及類事件定時規則。

排程

這是什麼

循環工作的每小時、每日、每週及類事件定時規則。

白話解釋

一個出發時刻表混合了三種行程——一個在固定時間出發的單次包車、一個每固定分鐘數永久出發的接駁車、以及一個按照固定日曆節奏運行的定期服務(每天、特定工作日,按時刻表規定)——這說明了 Hermes 排程的實際面貌:無論一個人在設定 cron 任務時如何寬鬆地描述,它就是這三種形狀中的一種。

為什麼重要

每小時、每日、每週或更接近事件驅動的形式——排程是 cron 任務實際運作的定時規則,也是操作者當任務觸發太頻繁或不夠頻繁時首先調整的部分。每日優先事項儀式依賴於在一致、可預測的時刻執行;一個在隨機時間觸發的儀式會失去其大部分價值。在任何一種方向上搞錯節奏都有實際成本:太頻繁會浪費模型呼叫,太不頻繁則意味著當人類看到資訊時已經過時了。

運作方式

排程字串由 parse_schedulecron/jobs.py)分類為三種形狀中的一種。「every 30m」或「every 2h」變成基於間隔的排程——compute_interval_schedule 會將解析後的秒數儲存為 interval_seconds,將 schedule_type 設為 interval,並透過將 interval_seconds 加到當前時間來計算下一次執行時間。「at 9am」或「at 6pm」變成基於時間的排程——compute_time_schedule 將解析後的小時和分鐘儲存為 schedule_time,將 schedule_type 設為 time,並根據那個每日目標時間計算下一次執行時間,如果今天那個時間已經過去則延後到明天。使用者提供的 cron 表達式如「0 9 * * 1-5」則按原樣儲存,並委託給 croniter 庫來計算下一次觸發。