文章目录
前言
服务器开发的过程中,经常遇到需要设置定时任务的情况。本文将探讨使用golang的cron包设置定时任务,你将收获cron表达式的使用,cron函数的使用,设置定时任务的场景
一、cron表达式
设定定时任务最重要的一环就是对定时的设置,cron中对定时的设置采取cron表达式
在线cron表达式生成器:https://cron.qqe2.com
cron表达式格式
二、设置定时重复任务
- cron.New(cron.WithSeconds()):根据本地时间创建一个新的cron job runner,并支持秒级设置定时任务
- AddFunc():设置操作函数,按照设置的定时时间进行执行
- Start():启动cron调度程序
- time.NewTimer():设置定时器,在到达特定时间后发出信号
- time.Reset():重设定时器
functimerTest(){
c := cron.New(cron.WithSeconds())
c.AddFunc("* * * * * *",func(){
fmt.Println("do something1")})
c.AddFunc("* * * * * *",func(){
fmt.Println("do something2")})
c.Start()
timer := time.NewTimer(time.Second *5)// 循环等待for{select{case<-timer.C:
timer.Reset(time.Second *5)}}}
三、多任务执行
设置定时器,每5s重复执行多个任务
- select{}:选取一个case来执行后结束,如果没有case执行,将会阻塞主线程
type job1 struct{}func(t job1)run(){
fmt.Println(time.Now(),"I am job1")}type job2 struct{}func(t job2)run(){
fmt.Println(time.Now(),"I am job2")}// 多任务执行funcrunCron(){
c := cron.New(cron.WithSeconds())
addFunc, err := c.AddFunc("*/5 * * * * *", job1{}.run)
fmt.Println(time.Now(), addFunc, err)
addFunc, err = c.AddFunc("*/5 * * * * *", job2{}.run)
fmt.Println(time.Now(), addFunc, err)
c.Start()select{}}
总结
服务器中经常需要一些定时操作的任务,比如:每2小时获取一次token,否则token将会过期的场景。cron专门用于处理定时任务的设置,可以在服务器中尝试使用cron来设置定时任务
版权归原作者 所有不开心都是闲出来的 所有, 如有侵权,请联系我们删除。