1.6. cron定时任务
引言
如果你熟悉linux,你肯定知道crontab,cron就是这样一个定时器,可以定时执行你定义的任务。
项目地址
项目地址: github.com/robfig/cron [star:10.3k]
使用场景
- 构建命令行应用程序
安装
go get github.com/robfig/cron/v3@v3.0.0
常用方法
- New 新建一个cron
- AddFunc 添加一个任务
- Stop 停止 cron 任务(不会体质进行中的任务)
- Start 开始 cron 任务计划(但是不会立即执行,根据配置的周期执行)
例子
package main
import (
"fmt"
"os"
"os/signal"
"syscall"
"time"
"github.com/robfig/cron/v3"
"github.com/sirupsen/logrus"
)
func main() {
cron := cron.New()
cron.AddFunc("* * * * *", func() {
fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
})
cron.Start()
sig := make(chan os.Signal)
signal.Notify(sig, syscall.SIGINT, syscall.SIGTERM)
select {
case <-sig:
logrus.SetFormatter(&logrus.TextFormatter{
TimestampFormat: "2006-01-02 15:04:05", // 定义日期时间格式
FullTimestamp: true,
DisableColors: true,
})
logrus.Info("game over")
cron.Stop()
}
}
这是运行的效果,运行了两次,然后我 ctrl + C 停止了。
实例代码
github.com/oscome/godaily/tree/mai...
tips
- 建议实际项目最后都调用一下 Stop, 防止内存泄露,当然如果每次停止都是重启,当我没说
关注和赞赏都是对笔者最大的支持
推荐文章: