go Cron定时任务

12 min read

安装

go get -u github.com/robfig/cron

Cron 特殊字符

1、星号 ( * )

星号表示将匹配字段的所有值

2、斜线 ( / )

斜线用户 描述范围的增量,表现为 “N-MAX/x”,first-last/x 的形式,例如 3-59/15 表示此时的第三分钟和此后的每 15 分钟,到59分钟为止。即从 N 开始,使用增量直到该特定范围结束。它不会重复

3、逗号 ( , )

逗号用于分隔列表中的项目。例如,在 Day of week 使用“MON,WED,FRI”将意味着星期一,星期三和星期五

4、连字符 ( - )

连字符用于定义范围。例如,9 - 17 表示从上午 9 点到下午 5 点的每个小时

5、问号 ( ? )

不指定值,用于代替 “ * ”,类似 “ _ ” 的存在,不难理解

预定义的 Cron 时间表

@yearly (or @annually)

1月1日午夜运行一次

0 0 0 1 1 *

@monthly

每个月的午夜,每个月的第一个月运行一次

0 0 0 1

@weekly

每周一次,周日午夜运行一次

0 0 0 0

@daily (or @midnight)

每天午夜运行一次

0 0 0 *

@hourly

每小时运行一次

0 0

Demo

func main() {
	// cron.New(cron.WithSeconds()).AddFunc("@every 1s", ScheduleFunc)
	c := cron.New(cron.WithSeconds())
	c.AddFunc("@every 10m", ScheduleFunc)
	c.Start() // 主体是 goroutine + for + select + timer 的调度控制
	select {} //阻塞主线程停止
}