Golang cron 定时使用指南
Posted 古月
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Golang cron 定时使用指南相关的知识,希望对你有一定的参考价值。
依赖包
import "github.com/robfig/cron/v3"
基本使用
package main
import (
"fmt"
"github.com/robfig/cron/v3"
"time"
)
func main() {
c := cron.New(cron.WithSeconds())
// 含义查看下文表达式示例
c.AddFunc("0/7 * * * * *", func() {
fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
})
c.Start()
time.Sleep(300 * time.Second)
}
Cron 表达式
表达式字段
注:使用 cron.New(cron.WithSeconds())
开启秒字段支持。
字段 | 必填 | 取值范围 | 特殊字符 |
---|---|---|---|
秒(Seconds) | 是 | 0–59 | * / , - |
分(Minutes) | 是 | 0–59 | * / , - |
小时(Hours) | 是 | 0–23 | * / , - |
一月中的某一天(Day of month) | 是 | 1–31 | * / , - ? |
月(Month) | 是 | 1–12 or JAN–DEC | * / , - |
星期几(Day of week) | 是 | 0–6 or SUN–SAT | * / , - ? |
特殊符号
- 星号(
*
)
星号表示匹配该字段的所有值,如在上面表达式的天位置中使用星号,就表示每天。 - 斜线(
/
)
斜杠用于描述范围的增量,比如\'3-59/15\'这个表达式在表示从现在的第三分钟开始和往后的每15分钟,到第59分钟为止。表现形式为"* \\ / ...",等同于"N-MAX / m",即在该字段范围内的增量。即从N开始,使用增量 m 直到 MAX 结束,它没有重复 - 逗号(
,
)
逗号用于分隔列表中的项,比如,在上表的\'星期几\'中使用 "MON,WED,FRI" 表示星期一、星期三和星期五 - 连字符(
-
)
连字符用于定义范围。例如,9-17表示包括上午9点至下午5点在内的每小时 - 问号 (
?
)
表示不指定值,可以来代替*
预定义表达式
表达式 | 描述 | 等式 |
---|---|---|
@yearly (or @annually) | 每年1月1日 00:00:00 执行一次 | 0 0 0 1 1 * |
@monthly | 每个月第一天的 00:00:00 执行一次 | 0 0 0 1 * * |
@weekly | 每周周六的 00:00:00 执行一次 | 0 0 0 * * 0 |
@daily (or @midnight) | 每天 00:00:00 执行一次 | 0 0 0 * * * |
@hourly | 每小时执行一次 | 0 0 * * * * |
@every time | 指定时间间隔执行一次,如 @every 5s ,每隔5秒执行一次。 | 0/5 * * * * * |
表达式示例
表达式 | 描述 | 执行时间点 |
---|---|---|
0/7 * * * * * | 每分钟秒数是 0或是 7 的倍数时执行一次执行 | 每分钟第 0,7,14,21,28,35,42,49,56 秒执行 |
1/7 * * * * * | 每分钟秒数是 1 秒或(秒数-1)是 7 的倍数时执行一次 | 每分钟第 1,8,15,22,29,36,43,50,57 秒执行 |
*/7 * * * * * | 等价于 0/7 * * * * * | - |
1/30 * * * * * | 每分钟的第 1 秒和(秒数 - 1) 是 30 的倍数执行 | 第1秒,第31秒执行,如 12:00:01 、12:00:31 |
0-15/5 * * * * * | 每分钟的 [0 15] 秒区间,秒数是 0 或是 5 的倍数是执行一次 | 每分钟第 0,5,10,15 秒执行 |
3-15/7 * * * * * | 每分钟的 [3 15] 秒区间,秒数是 3 或是 (秒数-3) 是 7 的倍数是执行一次 | 每分钟第 3,10 秒 |
3 * * * * * | 每分钟的第 3 秒执行一次 | - |
@every 5s | 每 5 秒执行一次,等价于 0/5 * * * * * | - |
@every 1h30m | 每一个半小时执行一次 | - |
参考链接
- robfig cron
- wikipedia cron
- golang cron定时任务简单实现
以上是关于Golang cron 定时使用指南的主要内容,如果未能解决你的问题,请参考以下文章