golang中執行定時任務

2021-09-25 06:59:56 字數 1699 閱讀 5347

cron(定時任務),按照約定的時間,定時的執行特定的任務(job),cron 表示式表達了這種約定。

格式一:

cron表示式是乙個字串,字串分為6個域,中間以空格隔開,每個域代表乙個含義

seconds minutes hours dayofmonth month dayofweek

欄位名是否必須

允許的值

允許的特定字元

秒(seconds)

是0-59

* / , –

分(minutes)

是0-59

* / , –

時(hours)

是0-23

* / , –

日(day of month)

是1-31

* / , – ?

月(month)

是1-12 or jan-dec

* / , –

星期(day of week)

否0-6 or sum-sat

* / , – ?

注:1)月(month)和星期(day of week)欄位的值不區分大小寫,如:sun、sun和 sun是一樣的。

2)星期(day of week)字段如果沒提供,相當於是 *

格式二:

@yearly @annually 每年執行

@monthly 每月執行

@weekly 每週執行

@dail @midnight 每天執行

@hourly 每小時執行

@every +空格+ hm*s(*表示具體的數字,h小時,m分鐘,s秒) 例如:@every 2h10m 表示每2小時10分鐘執行一次

1)星號(*)

表示 cron表示式能匹配該字段的所有值。如在第5個字段使用星號(month),表示每個月

2)斜線(/)

表示增長間隔,如第1個字段(minutes)值是 3-59/15,表示每小時的第3分鐘開始執行一次,之後每隔 15 分鐘執行一次(即 3、18、33、48這些時間點執行),這裡也可以表示為:3/15

例如:spec := 「*/5 * * * * *」 //每隔5s執行一次

3)逗號(,)

用於列舉值,如第6個字段值是 mon,wed,fri,表示星期

一、三、五執行

例如: spec := 「* 52,54 9 * * *」 //每天9:52分和9:54分的每秒都執行一次

4)連字型大小(-)

表示乙個範圍,如第3個字段的值為 9-17 表示 9am到 5pm直接每個小時(包括9和17)

例如:spec := 「15-30 * * * * *」 //每分鐘的15-30s執行定時任務

5)問號(?)

只用於日(day of month)和星期(day of week),表示不指定值,可以用於代替 *

//阻塞主線程不退出

}

Golang中的定時任務

timer 設定定時器,經過duration時間,timer會被觸發,timer被觸發之後,呼叫reset函式,重新設定定時器,再經過duration的時間,timer會被再次觸發。使用方式 ticker 設定週期定時器,每間隔duration時間,會將當前的時間傳送到chan中,讀端可以從chan...

golang的定時任務

golang的定時任務使用的是cron這個包來解決的 cron包的基礎知識 欄位名是否必須 允許的值 允許的特定字元 秒 seconds 是0 59 分 minutes 是0 59 時 hours 是0 23 日 day of month 是1 31 月 month 是1 12 星期 day of ...

Golang定時任務簡單實現

go get github.com robfig cron開啟乙個定時 根據cron表示式進行時間排程,cron可以精確到秒,大部分表示式格式也是從秒開始。c cron.new 預設從分開始,所以加上cron.withseconds 保證定時按照表示式字面意思執行。func main c.start...