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 配置需要定时执行的任务。