golang 定时任务

更新日期: 2020-06-10 阅读次数: 239 字数: 284 分类: golang

需求

我将一部分事件日志存储到了 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().

爱评论不评论

近期节日

2020年07月06日 国际接吻日
2020年07月06日 小暑
2020年07月07日 抗日战争纪念日
2020年07月11日 世界人口日
2020年07月22日 大暑
2020年07月30日 非洲妇女日
2020年08月01日 八一建军节
2020年08月06日 国际电影节
2020年08月07日 立秋
2020年08月15日 日本投降日
2020年08月22日 处暑
2020年08月25日 七夕
查看更多节日