v1.2.1

任務模型

最後更新


本頁說明 go-scheduler 任務包含哪些內容,以及會經歷哪些狀態。

任務欄位


Add 註冊的任務包含排程、action、描述、執行時限、逾時回呼與前置任務清單,並取得以 atomic.AddInt64 產生的遞增 int64 ID。
action 型別初始狀態可否帶依賴失敗來源
func()TaskCompleted否,Add 回傳錯誤panic(未設執行時限時)、逾時
func() errorTaskPending可回傳 error、panic(未設執行時限時)、逾時

只有未設執行時限的任務,panic 才會被 recover 並記為 TaskFailed。設定 time.Duration 時限後,action 在獨立 goroutine 執行且沒有 recover,panic 會讓整個行程結束;見 超時。

任務狀態


  1. const (
  2. TaskPending int = iota
  3. TaskRunning
  4. TaskCompleted
  5. TaskFailed
  6. )

轉換觸發條件
TaskPending → TaskRunning到期觸發,且依賴(如有)已滿足
TaskRunning → TaskCompletedaction 正常返回
TaskRunning → TaskFailed回傳 error、被 recover 的 panic 或超過執行時限
TaskPending → TaskFailed前置任務失敗(Stop)、前置任務不存在,或等待逾時
TaskCompleted/TaskFailed → TaskRunning無依賴任務的下一次觸發

狀態不會回到 TaskPending。有依賴的任務在狀態為 TaskRunning 或 TaskCompleted 時,後續觸發會直接略過;由於成功後狀態維持 TaskCompleted,這類任務最多只會成功執行一次,狀態為 TaskFailed 時則會在下一次觸發重新判斷。

相關主題


EN