golang 定时任务

更新日期: 2020-06-10 阅读次数: 946 字数: 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().

领取阿里云/腾讯云服务器优惠券

关于作者

我是来自山东烟台的一名开发者,喜欢瞎折腾,顺便记记笔记。有敢兴趣的话题,欢迎加微信 zhongwei 聊聊, 查看更多联系方式。 白天写程序,晚上哄熊孩子,可能回复有点慢,见谅。同时也欢迎关注我的微信公众号“大象工具”: 大象工具微信公众号

相关文章

爱评论不评论

近期节日

2020年10月31日 世界勤俭日
2020年11月01日 万圣节
2020年11月07日 立冬
2020年11月08日 中国记者日
2020年11月10日 世界青年节
2020年11月11日 光棍节
2020年11月14日 世界糖尿病日
2020年11月17日 国际大学生节
2020年11月20日 国际儿童日
2020年11月21日 世界问候日
2020年11月22日 小雪
2020年11月26日 感恩节
查看更多节日