gin框架中结合cron实现定时任务执行
背景:一个hr管理系统中,需要每日定时处理员工离职操作,需要每天定时执行删除账号等操作,在这使用定时任务比较方便,比如每天晚21点执行
实现方式如下:
- 创建定时任务
# 新建Console包,统一管理定时任务
package Console
import (
"ali-hr/Services/Staff"
"github.com/gookit/goutil/dump"
"github.com/robfig/cron/v3"
)
/**
* Created by Goland
* User: wkk [email protected]
* Time: 2023/1/8 - 02:02
* Desc: <统一定时任务管理>
*/
// Conrs 定时器
var Conrs *cron.Cron
// HandleCorn 定时任务入口
func init() {
dump.P("开始处理定时任务")
Conrs = cron.New() // 定时任务
Conrs.Start()
// 删除离职员工
_, err := Conrs.AddFunc("@every 1m", Staff.DeleteStaffs) // 每隔1分钟执行一次DeleteStaffs方法
if err != nil {
dump.P("删除员工定时任务失败。。。")
return
}
}
- main.go中启动定时任务和关闭定时任务
# main.go中启动定时任务
import "ali-hr/Console" // 使用init初始化机制,直接import Console包即可,会自动调用Console包中的init方法
# main.go中关闭定时任务
defer Console.Conrs.Stop()
- 测试执行