【golang-技巧】- 定时任务 - cron
1.背景
实现
- 凌晨生成报表
- 定时刷新缓存
- 定时监测任务状态
- …
2.实现
cron 表达式 同 java cron 无巨大差别 注意版本 有所不同
package mainimport ("fmt""github.com/robfig/cron/v3""time"
)func main() {c := cron.New()c.AddFunc("* * * * *", func() {fmt.Println("==== run function 1", time.Now().Format(time.RFC3339))})c.AddFunc("* * * * *", func() {fmt.Println("==== run function 2", time.Now().Format(time.RFC3339))})c.Start()t1 := time.NewTimer(time.Second * 10)// 阻塞程序不往下走,测试用for {select {case <-t1.C:t1.Reset(time.Second * 10)}}}
3.结论
通过cron 实现 定时执行任务