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 停止了。

cron

实例代码

github.com/oscome/godaily/tree/mai...

tips

  1. 建议实际项目最后都调用一下 Stop, 防止内存泄露,当然如果每次停止都是重启,当我没说

关注和赞赏都是对笔者最大的支持
关注和赞赏都是对笔者最大的支持

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~