golang 实现定时任务 cron

时间:2020-07-18 14:14:15   收藏:0   阅读:45

1. 安装cron

go get -u github.com/robfig/cron

2. 先看一个例子

这个例子将会每秒钟打印 一次hello world

package main

import (
	"fmt"
	"github.com/robfig/cron"
	"time"
)

func main (){
	c := cron.New()
	_ = c.AddFunc("* * * * * *", func() {
		fmt.Println("hello world")
	})
	c.Start()
	time.Sleep(10 * time.Second)
}

做几点说明:

3. 解决你的疑惑

time.Sleep() 真的好吗?

我们知道这一个语句的作用是让主goroutine等待,对于一个定时任务来说主goroutine应该一直等待,time.Sleep()肯定不是最好的解决方法,那我们该怎么做呢

* * * * * * 是什么?

这上面的例子中我们用* * * * * *来表示我们的定时计划,我已经告诉你们了,这表示每秒中执行一次,下面让我们详细的了解一下它的语法吧。

4. 一些常用表达式举例

含义 表达式
每隔10秒执行一次 */10 * * * * *
每个10分钟执行一次 0 */10 * * * *
每天0点0时0分执行一次 0 0 0 * * *
每天9点18点执行一次 0 0 9,18 * * *

其实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 * * * *

原文:https://www.cnblogs.com/kainhuck/p/13334851.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!