Golang学习笔记-定时任务
指定具体时间执行
package main
import (
"fmt"
"time"
)
func main() {
// 指定执行时间为 2023-11-29 00:00:00
executionTime := time.Date(2023, time.November, 29, 0, 0, 0, 0, time.UTC)
// 当前时间
now := time.Now().UTC()
// 计算距离执行时间的持续时间
duration := executionTime.Sub(now)
// 使用 time.AfterFunc 安排在指定时间执行的函数
time.AfterFunc(duration, func() {
fmt.Println("执行定时任务...")
// 在这里添加你的任务逻辑
})
// 主程序可以继续执行其他工作
// ...
// 阻塞程序,直到按下 Ctrl+C 才退出
select {}
}
定期执行
1. time模块
package main
import (
"fmt"
"time"
)
func main() {
// 创建一个定时器,每隔一段时间触发一次
ticker := time.NewTicker(5 * time.Second)
// 启动一个 goroutine 来处理定时任务
go func() {
for {
select {
case <-ticker.C:
// 这里写入你想要定期执行的任务
fmt.Println("定时任务执行:", time.Now())
}
}
}()
// 等待程序结束,可以使用通道或者其他方式
select {}
}
2.cron模块
go get github.com/robfig/cron
package main
import (
"fmt"
"github.com/robfig/cron"
)
func main() {
// 创建一个新的 cron 实例
c := cron.New()
// 添加你的定时任务,这里是一个每分钟执行一次的例子
c.AddFunc("* * * * *", func() {
fmt.Println("执行定时任务...")
})
// 启动 cron
c.Start()
// 主程序可以继续执行其他工作
// ...
// 阻塞程序,直到按下 Ctrl+C 才退出
select {}
}
本文来自博客园,作者:Jruing,转载请注明原文链接:https://www.cnblogs.com/jruing/p/17868873.html