需求
我将一部分事件日志存储到了 MySQL 上,只有最近几天的有参考价值,所以需要每天定时删除早期的日志,以节省存储空间。
技术选型
自从用了 Laravel 的定时任务之后,我就再也不喜欢用 Linux 系统自带的 crontab 了,因为部署时还需要手动配置。 项目多了之后,就容易忘记。不如在 web 服务框架中直接写,不容易遗忘。
golang 的计划任务三方库
https://godoc.org/github.com/robfig/cron
是否需要配置 crontab
golang 的这个实现,跟 laravel 的不太一样,不需要再配置一次 crontab。
实际上是开了个 goroutine.
Funcs are invoked in their own goroutine, asynchronously.
依赖安装
go get github.com/robfig/cron/v3@v3.0.0
代码目录结构
在 gin web 项目中,相对在 main 函数中列一堆 c.AddFunc,我觉得把所有定时任务的代码都放到一个文件中管理比较清晰。
例如,在项目根目录下新建一个 cron.go 文件
package main
import (
"fmt"
"github.com/robfig/cron/v3"
)
func start_cron() {
c := cron.New()
c.AddFunc("* * * * *", func() { fmt.Println("OK") })
c.Start()
}
然后在 gin 的 main 函数中调用 start_cron().
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式