go 定时任务库cron

1. 简介

  1. 包地址:github.com/robfig/cron/v3

  2. 介绍:https://darjun.github.io/2020/06/25/godailylib/cron/

  3. 类似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()接口

  1. 对于结构体,实现了Run接口,就可以直接当做job使用,直接调用Run()方法,jobrunner库中就是使用了这个特性。

4. 时间格式

1. 五种

2. 特殊字符含义

3. 时间格式例子

4. 代码例子

5. 固定时间间隔

1. 格式

2. duration格式

  1. 1h15m10s,每隔一小时15分10秒

  2. 1m1s

  3. 10s

6. 线程安全

  • cron会创建一个新的 goroutine 来执行触发回调。如果这些回调需要并发访问一些资源、数据,需要显式地做同步。

  • 如果每个都创建一个新的goroutine的话,如果需要大量定时任务,要考虑其他解决方案。

7. 其他特性

  • 暂不深入

最后更新于

这有帮助吗?