v1.2.1

設定

最後更新


本頁說明 go-scheduler 的排程器設定、單一任務選項,以及日誌與 Worker 池的執行期預設值。

排程器設定


  1. type Config struct {
  2. Location *time.Location
  3. }

欄位預設作用
Locationtime.Local計算 Cron 表達式與描述符下次觸發時間所用的時區

  1. loc, err := time.LoadLocation("Asia/Taipei")
  2. if err != nil {
  3. log.Fatal(err)
  4. }
  5. c, err := core.New(core.Config{Location: loc})
  6. if err != nil {
  7. log.Fatal(err)
  8. }
  9. if _, err := c.Add("30 9 * * 1-5", func() error {
  10. return sendReport()
  11. }, "weekday report"); err != nil {
  12. log.Fatal(err)
  13. }

30 9 * * 1-5 以 Asia/Taipei 時間於週一至週五 09:30 觸發。
套件不讀取環境變數或設定檔。

任務選項


Add 的可變參數依型別辨識,順序不限:
  1. func (c *cron) Add(spec string, action interface{}, arg ...interface{}) (int64, error)

型別設定備註
string任務描述依賴任務的日誌會輸出此值
time.Duration執行時限非啟動延遲;0 表示不設時限
func()逾時回呼僅在超過執行時限時呼叫
[]core.Wait前置任務action 必須為 func() error
[]int64前置任務(已棄用)每個 ID 轉為 Wait{ID: id},策略為 Stop

同型別重複傳入時,string/time.Duration/func() 以最後一個為準,[]core.Wait 與 []int64 會累加。
  1. _, err := c.Add("*/10 * * * *", func() error {
  2. return syncInventory()
  3. }, "inventory sync", 2*time.Minute, func() {
  4. log.Println("inventory sync exceeded 2m")
  5. }, []core.Wait{
  6. {ID: authID, State: core.Stop},
  7. {ID: cacheID, State: core.Skip},
  8. })
  9. if err != nil {
  10. log.Fatal(err)
  11. }

依賴設定


欄位值效果
ID前置任務 ID不存在時依賴任務失敗
Statecore.Stop(預設)前置任務失敗時,依賴任務失敗
Statecore.Skip忽略失敗的前置任務
Delay任意目前未生效,等待時限固定 1 分鐘

執行期預設值


項目值來源
Loggersyslog(LOG_INFO|LOG_LOCAL0,tag goCron)JSON 格式core/instance.go
Logger 備援stderr text 格式,等級 Infosyslog 無法建立時
依賴 Worker 數runtime.NumCPU(),CPU 數 ≤ 2 時為 2core/depend.go
Wait 佇列容量1024core/depend.go
依賴輪詢間隔1mscore/dependManager.go
@every 最小間隔30 秒core/schedule.go

以上數值皆無法由呼叫端調整。
執行期行為見 任務依賴 與 超時。
EN