go 定时任务库cron
1. 简介
包地址:github.com/robfig/cron/v3
介绍:https://darjun.github.io/2020/06/25/godailylib/cron/
类似Linux的crontab
2. 简单例子
```
package main
import (
"fmt"
"time"
"github.com/robfig/cron/v3"
)
func main() {
c := cron.New()
c.AddFunc("@every 1s", func() {
fmt.Println("tick every 1 second")
})
c.Start()
time.Sleep(time.Second * 5)
}
```3. job,实现Run()接口
对于结构体,实现了Run接口,就可以直接当做job使用,直接调用Run()方法,jobrunner库中就是使用了这个特性。
4. 时间格式
1. 五种
2. 特殊字符含义
3. 时间格式例子
4. 代码例子
5. 固定时间间隔
1. 格式
2. duration格式
1h15m10s,每隔一小时15分10秒
1m1s
10s
6. 线程安全
cron会创建一个新的 goroutine 来执行触发回调。如果这些回调需要并发访问一些资源、数据,需要显式地做同步。
如果每个都创建一个新的goroutine的话,如果需要大量定时任务,要考虑其他解决方案。
7. 其他特性
暂不深入
最后更新于
这有帮助吗?