手動觸發
這是什麼
能夠按需執行排程或定義好的任務以進行測試。
白話解釋
維護人員可以在客人稀少的早晨手動讓電梯在各樓層間運行,只是為了確認門和煞車運作正常,而不是等到下一位乘客按鈕才發現問題。手動觸發為 Hermes 任務提供了同樣的測試方式:不用等待排程或外部事件自行到來,而是立即執行完全相同的任務,並觀察它的實際行為。
為什麼重要
測試排程任務或事件驅動任務,而無需等待真實觸發條件發生——立即執行、查看輸出、確認行為——正是手動觸發存在的目的。它是編寫 cron 任務與真正信任它能無人值守運行之間的實用橋樑,因為沒有人想等到早上 6 點才發現每日簡報任務有 bug。它在運維方面也很有用,當需要立即檢查某些事項時,可以讓倉儲監控或看板執行任務在正常節奏之外運行。
運作方式
使用 action run、run_now 或 trigger 呼叫 cronjob 工具(tools/cronjob_tools.py)不僅僅是標記一個任務等待下一次觸發——它會立即執行。Hermes 首先嘗試透過 claim_job_for_fire 原子性地認領該任務——這是 Hermes 多機器外部排程器觸發路徑使用的相同比較並交換機制——它會檢查任務未被暫停或停用,蓋上新的認領戳記,並推進其下一次排程執行時間,這樣後續的觸發就不會再選中同一個觸發。如果任務已暫停或停用,認領會失敗,工具會直接報告這個狀況,而不是假裝執行了一次。一旦認領成功,執行會交給 run_one_job(cron/scheduler.py)。