前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用cron创建定时任务【Golang 入门系列八】

使用cron创建定时任务【Golang 入门系列八】

作者头像
架构师精进
发布2019-07-19 10:10:24
1.6K0
发布2019-07-19 10:10:24
举报
文章被收录于专栏:公众号文章公众号文章

1、cron 表达式的基本格式

Go 实现的cron 表达式的基本语法跟linux 中的 crontab基本是类似的。cron(计划任务),就是按照约定的时间,定时的执行特定的任务(job)。

cron 表达式表示一个时间集合,使用 6 个空格分隔的字段表示。每个子表达式都描述了一个单独的日程细节

是否强制

允许值

允许特殊字符

Seconds

YES

0-59

, - * /

Minutes

YES

0-59

, - * /

Hours

YES

0-23

, - * /

Day of month

YES

1-31

, - * ? / L W

Month

YES

1-12 or JAN-DEC

, - * /

Day of week

YES

1-7 or SUN-SAT

, - * ? / L #

Year

NO

empty, 1970-2099

, - * /

所以,比如一个cron表达式字符串"0 0 10 ? * MON",这表示“每周一的中午10:00”。

如果对cron 表达式不清楚的,可以看看我之前介绍quartz.net 的文章,Quartz.NET总结(二)CronTrigger和Cron表达式 。

2、使用的包

代码语言:javascript
复制
github.com/robfig/cron
代码语言:javascript
复制

3、示例

  • 创建最简单的最简单cron任务
代码语言:javascript
复制
package main

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

func main() {
   i := 0
   c := cron.New()
   spec := "*/5 * * * * ?"
   c.AddFunc(spec, func() {
      i++
      fmt.Println("cron running:", i)
   })
   c.Start()

   select{}
}

启动后输出如下:

代码语言:javascript
复制
D:\Go_Path\go\src\cronjob>go run singlejob.go
cron running: 1
cron running: 2
cron running: 3
cron running: 4
cron running: 5
代码语言:javascript
复制
  • 多个定时cron任务
代码语言:javascript
复制
package main

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

type TestJob struct {
}

func (this TestJob)Run() {
    fmt.Println("testJob1...")
}

type Test2Job struct {
}

func (this Test2Job)Run() {
    fmt.Println("testJob2...")
}

//启动多个任务
func main() {
    i := 0
    c := cron.New()

    //AddFunc
    spec := "*/5 * * * * ?"
    c.AddFunc(spec, func() {
        i++
        fmt.Println("cron running:", i)
    })

    //AddJob方法
    c.AddJob(spec, TestJob{})
    c.AddJob(spec, Test2Job{})

    //启动计划任务
    c.Start()

    //关闭着计划任务, 但是不能关闭已经在执行中的任务.
    defer c.Stop()

    select{}
}

启动后输出如下:

代码语言:javascript
复制
D:\Go_Path\go\src\cronjob>go run multijob.go
cron running: 1
testJob1...
testJob2...
testJob1...
cron running: 2
testJob2...
testJob1...
testJob2...
cron running: 3
cron running: 4
testJob1...
testJob2...

4、最后

以上,就将Golang中如何创建定时任务做了简单介绍,实际使用中,大家可以可结合toml yaml 配置需要定时执行的任务。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 架构师精进 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、cron 表达式的基本格式
  • 2、使用的包
  • 3、示例
  • 4、最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档