feat(cron): 实现定时任务管理功能

- 新增 cron模块,支持定时任务管理- 实现了任务列表获取、任务添加、任务移除和任务状态获取等接口
- 添加了默认任务,包括数据同步、数据清理、健康检查和缓存刷新等
- 实现了优雅关闭功能,确保在服务停止时正确停止所有任务
- 添加了定时任务相关文档和使用指南
This commit is contained in:
hu xiaotong
2025-06-23 15:19:38 +08:00
parent 89a6cdc001
commit cecb19e497
16 changed files with 1571 additions and 7 deletions

View File

@@ -2,10 +2,15 @@ package cmd
import (
"context"
"epic/internal/controller/cron"
"epic/internal/controller/hero"
"epic/internal/service"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/ghttp"
"github.com/gogf/gf/v2/os/gcmd"
"os"
"os/signal"
"syscall"
)
func CORS(r *ghttp.Request) {
@@ -19,12 +24,22 @@ var (
Usage: "main",
Brief: "start http server",
Func: func(ctx context.Context, parser *gcmd.Parser) (err error) {
// 启动定时任务
if err := service.Cron().StartAllJobs(ctx); err != nil {
g.Log().Error(ctx, "Failed to start cron jobs:", err)
return err
}
// 设置优雅关闭
setupGracefulShutdown(ctx)
s := g.Server()
s.Use(CORS)
s.Group("/", func(group *ghttp.RouterGroup) {
group.Middleware(ghttp.MiddlewareHandlerResponse)
group.Bind(
hero.NewV1(),
cron.NewV1(),
)
})
s.Run()
@@ -32,3 +47,24 @@ var (
},
}
)
// setupGracefulShutdown 设置优雅关闭
func setupGracefulShutdown(ctx context.Context) {
// 创建信号通道
sigChan := make(chan os.Signal, 1)
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
// 在后台监听信号
go func() {
sig := <-sigChan
g.Log().Infof(ctx, "Received signal: %v, shutting down gracefully...", sig)
// 停止定时任务
if err := service.Cron().StopAllJobs(ctx); err != nil {
g.Log().Error(ctx, "Failed to stop cron jobs:", err)
}
// 退出程序
os.Exit(0)
}()
}