day6-cron定时任务

引言

如果你熟悉linux,你肯定知道crontab,cron就是这样一个定时器,可以定时执行你定义的任务。

项目地址

项目地址: https://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 停止了。

cron

实例代码

https://github.com/oscome/godaily/tree/main/day006

tips

  1. 建议实际项目最后都调用一下 Stop, 防止内存泄露

关注和赞赏都是对小欧莫大的支持! 🤝 🤝 🤝
公众号