設定
最後更新
本頁說明 go-scheduler 的排程器設定、單一任務選項,以及日誌與 Worker 池的執行期預設值。
排程器設定
- type Config struct {
- Location *time.Location
- }
| 欄位 | 預設 | 作用 |
|---|---|---|
Location | time.Local | 計算 Cron 表達式與描述符下次觸發時間所用的時區 |
- loc, err := time.LoadLocation("Asia/Taipei")
- if err != nil {
- log.Fatal(err)
- }
- c, err := core.New(core.Config{Location: loc})
- if err != nil {
- log.Fatal(err)
- }
- if _, err := c.Add("30 9 * * 1-5", func() error {
- return sendReport()
- }, "weekday report"); err != nil {
- log.Fatal(err)
- }
30 9 * * 1-5 以 Asia/Taipei 時間於週一至週五 09:30 觸發。套件不讀取環境變數或設定檔。
任務選項
Add 的可變參數依型別辨識,順序不限:- 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 會累加。- _, err := c.Add("*/10 * * * *", func() error {
- return syncInventory()
- }, "inventory sync", 2*time.Minute, func() {
- log.Println("inventory sync exceeded 2m")
- }, []core.Wait{
- {ID: authID, State: core.Stop},
- {ID: cacheID, State: core.Skip},
- })
- if err != nil {
- log.Fatal(err)
- }
依賴設定
| 欄位 | 值 | 效果 |
|---|---|---|
ID | 前置任務 ID | 不存在時依賴任務失敗 |
State | core.Stop(預設) | 前置任務失敗時,依賴任務失敗 |
State | core.Skip | 忽略失敗的前置任務 |
Delay | 任意 | 目前未生效,等待時限固定 1 分鐘 |
執行期預設值
| 項目 | 值 | 來源 |
|---|---|---|
| Logger | syslog(LOG_INFO|LOG_LOCAL0,tag goCron)JSON 格式 | core/instance.go |
| Logger 備援 | stderr text 格式,等級 Info | syslog 無法建立時 |
| 依賴 Worker 數 | runtime.NumCPU(),CPU 數 ≤ 2 時為 2 | core/depend.go |
| Wait 佇列容量 | 1024 | core/depend.go |
| 依賴輪詢間隔 | 1ms | core/dependManager.go |
@every 最小間隔 | 30 秒 | core/schedule.go |
以上數值皆無法由呼叫端調整。
執行期行為見 任務依賴 與 超時。