go get github.com/robfig/cron
開啟乙個定時:
根據cron表示式進行時間排程,cron可以精確到秒,大部分表示式格式也是從秒開始。
c := cron.new()預設從分開始,所以加上cron.withseconds(),保證定時按照表示式字面意思執行。
func
main()
) c.
start()
select
//阻塞主線程停止
}
停止定時:
由於goroutine沒有執行緒id,所以無法從外部停止指定的定時任務。cron自帶stop()方法,支援在方法體裡使用,來停止當前定時。
何時呼叫stop()方法,需要根據自身業務觸發,例如執行完成100次後停止,資料庫當前狀態為登出時停止,等等。
func
main()
else})
c.start()
select
//阻塞主線程停止
}
開啟多個定時:
乙個c物件可以載入多個定時任務,此時在其中乙個方法裡呼叫stop()方法,所有定時任務都會停止。
func
main()
) spec1 :=
"*/5 * * * * ?"
//cron表示式,每5秒一次
c.addfunc
(spec1,
func()
) c.
start()
select
//阻塞主線程停止
}
常見cron表示式:
表示式如果算上年份,共7位:
秒 分 時 日 月 周 年
實際應用中很少用到年份,所以一般表示式都是6位:
秒 分 時 日 月 周
*/1 * * * * ? 每秒
00 * * * * ? 每分
00 30 22 * * ? 每天晚上22:30
00 30 22 * * 2 每週二晚上22:30
00 30 22 * * 1,3 每週一和週三晚上22:30
*/5 35 10 * * 1-3 每週一到週三上午10點35分00秒開始第一次,然後每5秒一次
00 10,40 14 ? 3 4 每年三月的星期四的下午14:10和14:40
需要更複雜更細緻的表示式寫法,可自行上網查詢。
注意:
網上有很多不同的cron包,同乙個包版本也有多個,整體用法雖相似,但對cron表示式的處理會有一定差別,例如c := cron.new()有直接從秒開始的,不用加cron.withseconds(),也有用5位長度來指定表示式的。
Golang定時任務簡單實現
go get github.com robfig cron開啟乙個定時 根據cron表示式進行時間排程,cron可以精確到秒,大部分表示式格式也是從秒開始。c cron.new 預設從分開始,所以加上cron.withseconds 保證定時按照表示式字面意思執行。func main c.start...
golang的定時任務
golang的定時任務使用的是cron這個包來解決的 cron包的基礎知識 欄位名是否必須 允許的值 允許的特定字元 秒 seconds 是0 59 分 minutes 是0 59 時 hours 是0 23 日 day of month 是1 31 月 month 是1 12 星期 day of ...
Golang中的定時任務
timer 設定定時器,經過duration時間,timer會被觸發,timer被觸發之後,呼叫reset函式,重新設定定時器,再經過duration的時間,timer會被再次觸發。使用方式 ticker 設定週期定時器,每間隔duration時間,會將當前的時間傳送到chan中,讀端可以從chan...