| |
github.com/robfig/cron/v3
是一个流行的Go语言库,用于在Go程序中安排周期性的任务。以下是如何使用 cron
库编写一个简单的定时任务的示例:
package main
import (
"fmt"
"time"
"github.com/robfig/cron/v3"
)
func main() {
// 创建一个新的cron实例
c := cron.New(cron.WithSeconds()) // 启用秒字段
// 定义任务1:每分钟的第30秒执行
c.AddFunc("30 * * * * *", func() {
fmt.Println("每分钟的第30秒执行:", time.Now())
})
// 定义任务2:每分钟每5秒执行
c.AddFunc("*/5 * * * * *", func() {
fmt.Println("每分钟每5秒执行:", time.Now())
})
// 定义任务3:每天上午8点到下午6点之间,每小时的第15分钟和第45分钟执行
c.AddFunc("15,45 8-18 * * *", func() {
fmt.Println("每天8点到18点之间,每小时的第15分钟和第45分钟执行:", time.Now())
})
// 定义任务4:每天23:59:59执行,用于日终结任务
c.AddFunc("59 59 23 * * *", func() {
fmt.Println("每天23:59:59执行,用于日终结任务:", time.Now())
})
// 定义任务5:每周一上午8点执行,用于周报告
c.AddFunc("0 8 * * 1", func() {
fmt.Println("每周一上午8点执行,用于周报告:", time.Now())
})
// 定义任务6:每月的最后一天的23:59:59执行,用于月度清理任务
c.AddFunc("59 59 23 L * *", func() {
fmt.Println("每月的最后一天的23:59:59执行,用于月度清理任务:", time.Now())
})
// 启动cron调度器
c.Start()
// 为了保持程序运行,使用一个阻塞的select语句
select {}
}
cron.New()
创建一个新的cron调度器实例。c.AddFunc
方法用于添加一个新的任务,它接受两个参数:一个是cron表达式,定义了任务的执行计划;另一个是任务执行时调用的函数。fmt.Println
用于在控制台输出当前时间,表示任务执行的时间点。c.Start()
启动cron调度器,它在后台启动一个goroutine来监控任务的执行。select{}
是一个阻塞调用,用于保持程序运行,防止程序退出。在实际应用中,你可能需要根据程序的其他部分来适当地处理退出逻辑。cron表达式由6或7个字段组成,分别表示:
例如,"* * * * * *"
表示每秒钟执行一次,而 "30 * * * * *"
表示每分钟的第30秒执行一次。
确保你已经安装了 cron
库,如果没有,可以使用以下命令安装:
go get github.com/robfig/cron/v3
cron库的定时任务是基于当前时区的,如果你的程序需要在特定的时区运行任务,请确保考虑到时区问题。
在生产环境中,你可能需要处理任务执行中可能出现的错误,并确保cron调度器能够持续运行。
cron库的定时任务是基于当前时区的,如果你的程序需要在特定的时区运行任务
30 服务端 ↦ Go从0到1手把手教程 __ 185 字