【GoCN酷Go推薦】gocron 定時(shí)任務(wù)管理器
簡(jiǎn)介
很多時(shí)候,項(xiàng)目中需要用到定時(shí)任務(wù),或者周期任務(wù)。首先我們想到了 crontab,但是 crontab 使用會(huì)和項(xiàng)目分離,不那么方便。那怎么辦呢?
這里,推薦使用gocron 這個(gè)庫(kù),可以非常方便的設(shè)置定時(shí)任務(wù),無(wú)論年、月、日、時(shí)、分、秒的定時(shí)設(shè)置。同時(shí),它還提供 crontab 字符串格式的設(shè)置功能。
快速使用
步驟如下:
安裝包"github.com/go-co-op/gocron" 引入包,參照例子直接使用
1.簡(jiǎn)單使用
首先,初始化 s 對(duì)象; 然后,直接配置定時(shí)任務(wù),任務(wù)添加函數(shù)名 + 參數(shù); 最后,block 當(dāng)前進(jìn)程,觀察任務(wù)執(zhí)行。
package main
import (
"fmt"
"time"
"github.com/go-co-op/gocron"
)
func task(s string){
fmt.Printf("I'm running, about %s. \n", s)
}
func main() {
s := gocron.NewScheduler(time.UTC)
s.Every(1).Seconds().Do(task, "1s")
s.StartBlocking()
}
輸出如下:
I'm running, about 1s.
I'm running, about 1s.
I'm running, about 1s.
2.更多參考設(shè)置
針對(duì)定時(shí)任務(wù),可以設(shè)置 時(shí)、分、秒、天、周、幾點(diǎn),也可以 crontab 字符串的格式設(shè)置。
package main
import (
"fmt"
"time"
"github.com/go-co-op/gocron"
)
func task(){
fmt.Printf("I'm running.\n")
}
func main() {
s := gocron.NewScheduler(time.UTC)
// 每隔多久
s.Every(1).Seconds().Do(task)
s.Every(1).Minutes().Do(task)
s.Every(1).Hours().Do(task)
s.Every(1).Days().Do(task)
s.Every(1).Weeks().Do(task)
// 每周幾
s.Every(1).Monday().Do(task)
s.Every(1).Thursday().Do(task)
// 每天固定時(shí)間
s.Every(1).Days().At("10:30").Do(task)
s.Every(1).Monday().At("18:30").Do(task)
s.Every(1).Tuesday().At("18:30:59").Do(task)
// 設(shè)置crontab字符串格式
s.Cron("*/1 * * * *").Do(task)
s.StartBlocking()
}
總結(jié)
參考資料
https://github.com/go-co-op/gocron
更多請(qǐng)查看:https://github.com/go-co-op/gocron
歡迎加入我們GOLANG中國(guó)社區(qū):https://gocn.vip/
《酷Go推薦》招募:
各位Gopher同學(xué),最近我們社區(qū)打算推出一個(gè)類(lèi)似GoCN每日新聞的新欄目《酷Go推薦》,主要是每周推薦一個(gè)庫(kù)或者好的項(xiàng)目,然后寫(xiě)一點(diǎn)這個(gè)庫(kù)使用方法或者優(yōu)點(diǎn)之類(lèi)的,這樣可以真正的幫助到大家能夠?qū)W習(xí)到
新的庫(kù),并且知道怎么用。
大概規(guī)則和每日新聞?lì)愃疲绻麍?bào)名人多的話(huà)每個(gè)人一個(gè)月輪到一次,歡迎大家報(bào)名!(報(bào)名地址:https://wj.qq.com/s2/7734329/3f51)
掃碼也可以加入 GoCN 的大家族喲~
