1.使用 time 包的 After 和 Ticker 功能
package main import ( "fmt" "time" ) func main() { // 单次定时任务 timer := time.After(5 * time.Second) <-timer fmt.Println("5 秒后执行的单次定时任务") // 周期性定时任务 ticker := time.NewTicker(2 * time.Second) defer ticker.Stop() for range ticker.C { fmt.Println("每 2 秒执行一次的周期性定时任务") } }
2.使用第三方库 github.com/robfig/cron
package main import ( "fmt" "github.com/gin-gonic/gin" "github.com/robfig/cron" ) // InitCron 初始化并启动定时任务 func InitCron() { c := cron.New() // 每分钟的第 30 秒执行 c.AddFunc("30 * * * * *", func() { fmt.Println("每分钟的第 30 秒执行") }) // 每 5 分钟执行 c.AddFunc("*/5 * * * *", func() { fmt.Println("每 5 分钟执行") }) c.Start() } func main() { r := gin.Default() // 请求验证码的路由 r.GET("/getCode", func(c *gin.Context) { // 此处编写生成和返回验证码的逻辑 c.JSON(200, gin.H{"message": "验证码已生成并返回"}) }) InitCron() // 启动服务器,监听 8080 端口 if err := r.Run(":8080"); err!= nil { fmt.Println("服务器启动失败:", err) } }
在定时任务的执行函数中,根据业务可以添加开关状态决定是否执行任务。
给个关注,下期继续分享干货。
