Golang 入门系列(八) cron定时任务

释放双眼,带上耳机,听听看~!

1、cron 表达式的基本格式

 Go 实现的cron 表达式的基本语法跟linux 中的 crontab基本是类似的。cron(计划任务),就是按照约定的时间,定时的执行特定的任务(job)。cron 表达式 表达了这种约定。 cron 表达式代表了一个时间集合,使用 6 个空格分隔的字段表示。如果对cron 表达式不清楚的,可以看看我之前介绍quartz.net 的文章,
Quartz.NET总结(二)CronTrigger和Cron表达式 。  

2、使用的包

github.com/robfig/cron

 

3、示例

  • 创建最简单的最简单cron任务
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{}
}

 

启动后输出如下:
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

 

 

  • 多个定时cron任务
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{}
}

 


启动后输出如下:
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 配置需要定时执行的任务。

给TA打赏
共{{data.count}}人
人已打赏
站长资讯

Linux网络技术管理及进程管理(week2_day4)--技术流ken

2020-11-9 3:42:44

站长资讯

C# 动态加载组件后怎么在开发环境中调试

2020-11-9 3:42:46

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索