feat(cron): 添加定时任务模块
This commit is contained in:
1 parent
20ad8115da
commit
ba25a815a4
4 files changed
+40
No files matched your search
@@ -1,6 +1,7 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"EnGin/internal/cron"
|
||||||
"EnGin/internal/db"
|
"EnGin/internal/db"
|
||||||
"EnGin/internal/global"
|
"EnGin/internal/global"
|
||||||
"EnGin/internal/server"
|
"EnGin/internal/server"
|
||||||
@@ -33,6 +34,10 @@ var serverCmd = &cobra.Command{
|
|||||||
global.Log.Fatal("初始化 Casbin 失败", zap.Error(err))
|
global.Log.Fatal("初始化 Casbin 失败", zap.Error(err))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 初始化定时任务
|
||||||
|
cron.InitCron()
|
||||||
|
defer cron.Stop()
|
||||||
|
|
||||||
// 启动 Gin 服务
|
// 启动 Gin 服务
|
||||||
server.Run()
|
server.Run()
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -61,6 +61,7 @@ require (
|
|||||||
github.com/pkg/errors v0.9.1 // indirect
|
github.com/pkg/errors v0.9.1 // indirect
|
||||||
github.com/quic-go/qpack v0.6.0 // indirect
|
github.com/quic-go/qpack v0.6.0 // indirect
|
||||||
github.com/quic-go/quic-go v0.59.0 // indirect
|
github.com/quic-go/quic-go v0.59.0 // indirect
|
||||||
|
github.com/robfig/cron/v3 v3.0.1 // indirect
|
||||||
github.com/sagikazarmark/locafero v0.11.0 // indirect
|
github.com/sagikazarmark/locafero v0.11.0 // indirect
|
||||||
github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect
|
github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect
|
||||||
github.com/spf13/afero v1.15.0 // indirect
|
github.com/spf13/afero v1.15.0 // indirect
|
||||||
|
|||||||
@@ -146,6 +146,8 @@ github.com/quic-go/quic-go v0.59.0 h1:OLJkp1Mlm/aS7dpKgTc6cnpynnD2Xg7C1pwL6vy/SA
|
|||||||
github.com/quic-go/quic-go v0.59.0/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU=
|
github.com/quic-go/quic-go v0.59.0/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU=
|
||||||
github.com/redis/go-redis/v9 v9.21.0 h1:FPBE4hhbAke+TLmcY3WkpbDffJEomdqPn3HYiqAtL9E=
|
github.com/redis/go-redis/v9 v9.21.0 h1:FPBE4hhbAke+TLmcY3WkpbDffJEomdqPn3HYiqAtL9E=
|
||||||
github.com/redis/go-redis/v9 v9.21.0/go.mod h1:v/M13XI1PVCDcm01VtPFOADfZtHf8YW3baQf57KlIkA=
|
github.com/redis/go-redis/v9 v9.21.0/go.mod h1:v/M13XI1PVCDcm01VtPFOADfZtHf8YW3baQf57KlIkA=
|
||||||
|
github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=
|
||||||
|
github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
|
||||||
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
|
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
|
||||||
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
|
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
|
||||||
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
package cron
|
||||||
|
|
||||||
|
import (
|
||||||
|
"EnGin/internal/global"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/robfig/cron/v3"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Cron 实例全局持有,方便后续管理(比如优雅退出时关闭)
|
||||||
|
|
||||||
|
var Crontab *cron.Cron
|
||||||
|
|
||||||
|
func InitCron() {
|
||||||
|
timezone, _ := time.LoadLocation("Asia/Shanghai")
|
||||||
|
Crontab = cron.New(cron.WithSeconds(), cron.WithLocation(timezone))
|
||||||
|
|
||||||
|
// 在这里注册您的定时任务
|
||||||
|
// Crontab.AddFunc("*/5 * * * * *", func() {
|
||||||
|
// global.Log.Info("定时任务执行中...")
|
||||||
|
// })
|
||||||
|
|
||||||
|
Crontab.Start()
|
||||||
|
global.Log.Info("后台定时任务启动成功")
|
||||||
|
}
|
||||||
|
|
||||||
|
func Stop() {
|
||||||
|
if Crontab != nil {
|
||||||
|
Crontab.Stop()
|
||||||
|
global.Log.Info("后台定时任务已安全停止")
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in new issue
Block a user