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 配置需要定时执行的任务.
来源: https://www.cnblogs.com/zhangweizhong/p/10505005.html