1.前言:
因为提桶了所以没事做做看
特别感谢这位大佬开源GinSkeleton张奇峰
作为脚手架是非常合适,不过有个别功能还是需要自己加一下,本次是增加定时任务功能。
2.使用
下载cron
go get github.com/robfig/cron/v3
定时代码的实现
func main() {
c := cron.New()
c.AddFunc("@every 1s", func() {
fmt.Println(time.Now(), "run every 1 second")
})
//启动cron调度器
c.Start()
//阻塞,使其循环
select {}
}
输出结果
2024-08-06 14:30:29.0038247 +0800 CST m=+0.180298301 run every 1 second
2024-08-06 14:30:30.0132059 +0800 CST m=+1.189679501 run every 1 second
2024-08-06 14:30:31.01343 +0800 CST m=+2.189903601 run every 1 second
2024-08-06 14:30:32.0139018 +0800 CST m=+3.190375401 run every 1 second
2024-08-06 14:30:33.0063456 +0800 CST m=+4.182819201 run every 1 second
2024-08-06 14:30:34.0155848 +0800 CST m=+5.192058401 run every 1 second
2024-08-06 14:30:35.0073089 +0800 CST m=+6.183782501 run every 1 second
3.进阶版
如何在定时代码块查询、修改、删除数据库操作
import导入_ “godemo/bootstrap”,主要是引入初始化数据库全局配置
import (
"fmt"
"github.com/robfig/cron/v3"
_ "godemo/bootstrap"
"time"
)
从现有的查询代码拷到定时任务里
func main() {
c := cron.New()
c.AddFunc("@every 1s", func() {
cityFac := province_city.CreateProvinceCityFactory("")
if counts, lists := cityFac.List("", 1, 0, 5); counts > 0 {
for i := range lists {
fmt.Println(lists[i].Name)
}
}
})
// 启动cron调度器
c.Start()
//阻塞,使其循环
select {}
}
输出结果
北京
安徽
福建
甘肃
广东
北京
安徽
福建
甘肃
广东
4.结束语
做个简单定时任务需求还是可以,可能不适用于分布式,有机会研究下
如有错误,欢迎批评纠正