系列文章
【golang学习之旅】报错:a declared but not used
【golang学习之旅】Go 的基本数据类型
【golang学习之旅】深入理解字符串string数据类型
【golang学习之旅】go mod tidy
【golang学习之旅】记录一次 panic case : reflect: reflect.Value.SetInt using unaddressable value
【golang学习之旅】记录一次 error case : full error output: cc1: error: unrecognized command line option
目录
- 系列文章
- cron库
- 快速使用
- 参考
cron库
cron 是一个用Go实现的定时任务库,支持秒级定时任务,可以满足绝大多数工作场景需求。基本用法和Linux中的crontab
类似
cron库分两个主要的版本,v1.2和v3.0。二者在使用上有些区别:
- v1.2版本默认支持精确到秒的cron表达式
- v3版本默认不再是支持秒级别定时任务,而是从分钟域开始执行,要细化到秒级别时,必须携带
cron.WithSeconds()
参数 - v3支持定时任务的撤销功能
用法与linux的crontab类似,不过多了个秒级别
* * * * * * //依次是 秒 分 时 日 月 周
快速使用
- 安装
go get -u github.com/robfig/cron //1.2版本
go get github.com/robfig/cron/v3 //3.0版本
下面演示v3版本的简单用法:
- 示例
package main
import (
"fmt"
"github.com/robfig/cron/v3"
"time"
)
func main() {
// 开启秒字段支持
c := cron.New(cron.WithSeconds()) //注意3.0版本不再默认支持秒级,所以这里初始化的时候要添加cron.WithSeconds()参数
// 传统表达式写法: 每秒执行一次
_, _ = c.AddFunc("0/1 * * * * *", func() {
fmt.Println("传统表达式: ",time.Now().Format("2006-01-02 15:04:05"))
})
// 预定义表达式
_,_ = c.AddFunc("@every 1s", func() {
fmt.Println("预定义表达式: ",time.Now().Format("2006-01-02 15:04:05"))
})
// 启动
c.Start()
// 使程序无限阻塞
select{}
- 说明
-
开启秒级级别支持情况下的写法:
-
预定义模式(用于AddFunc()):
-
参考
http://liuqh.icu/2021/07/18/go/package/27-cron/
https://www.cnblogs.com/Xinenhui/p/16976562.html