golang的定時任務

2022-07-25 07:09:07 字數 1785 閱讀 8991

golang的定時任務使用的是cron這個包來解決的

cron包的基礎知識

欄位名是否必須

允許的值

允許的特定字元

秒(seconds)

是0-59

* / , -

分(minutes)

是0-59

* / , -

時(hours)

是0-23

* / , -

日(day of month)

是1-31

* / , – ?

月(month)

是1-12

* / , -

星期(day of week)

否0-6 or sum-sat

* / , – ?

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

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

特殊字元說明

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

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

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

一、三、五 執行

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

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

cron舉例說明

每隔5秒執行一次:*/5 * * * * ?

每隔1分鐘執行一次:0 */1 * * * ?

每天23點執行一次:0 0 23 * * ?

每天凌晨1點執行一次:0 0 1 * * ?

每月1號凌晨1點執行一次:0 0 1 1 * ?

在26分、29分、33分執行一次:0 26,29,33 * * * ?

每天的0點、13點、18點、21點都執行一次:0 0 0,13,18,21 * * ?

例項**:

這裡的select是相當於死迴圈的意義,如果不寫,程式會立刻退出,寫for死迴圈也是可以的

多工

package main

Golang中的定時任務

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

golang中執行定時任務

cron 定時任務 按照約定的時間,定時的執行特定的任務 job cron 表示式表達了這種約定。格式一 cron表示式是乙個字串,字串分為6個域,中間以空格隔開,每個域代表乙個含義 seconds minutes hours dayofmonth month dayofweek 欄位名是否必須 允...

Golang定時任務簡單實現

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