Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 09d59162d0 |
@@ -0,0 +1,49 @@
|
||||
package schedule
|
||||
|
||||
import (
|
||||
"context"
|
||||
"likedream-goframe/internal/cst"
|
||||
"likedream-goframe/internal/framework/redis"
|
||||
"likedream-goframe/internal/utils"
|
||||
|
||||
"github.com/hibiken/asynq"
|
||||
)
|
||||
|
||||
var globalPeriodicTaskManager *asynq.PeriodicTaskManager
|
||||
|
||||
func initPeriodicTasks(ctx context.Context) {
|
||||
// 创建周期性任务配置提供者
|
||||
provider := &periodicTaskConfigProvider{}
|
||||
|
||||
// 创建周期性任务管理器
|
||||
globalPeriodicTaskManager, _ = asynq.NewPeriodicTaskManager(
|
||||
asynq.PeriodicTaskManagerOpts{
|
||||
RedisUniversalClient: redis.GetClient(),
|
||||
PeriodicTaskConfigProvider: provider,
|
||||
SyncInterval: 0, // 立即同步,使用默认值
|
||||
},
|
||||
)
|
||||
|
||||
// 启动周期性任务管理器
|
||||
e := globalPeriodicTaskManager.Start()
|
||||
utils.OkOrPanic(e)
|
||||
}
|
||||
|
||||
// periodicTaskConfigProvider 提供周期性任务配置
|
||||
type periodicTaskConfigProvider struct{}
|
||||
|
||||
// GetConfigs 返回所有周期性任务配置
|
||||
func (p *periodicTaskConfigProvider) GetConfigs() ([]*asynq.PeriodicTaskConfig, error) {
|
||||
return []*asynq.PeriodicTaskConfig{
|
||||
{
|
||||
//Cronspec: "0 1 * * *", // 每天凌晨1点执行
|
||||
Cronspec: "0 1 * * * ",
|
||||
Task: asynq.NewTask(cst.TaskResetDaily, nil),
|
||||
Opts: []asynq.Option{
|
||||
asynq.Queue(cst.TaskQueueDefault),
|
||||
asynq.MaxRetry(3),
|
||||
asynq.Timeout(0), // 使用默认超时
|
||||
},
|
||||
},
|
||||
}, nil
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package schedule
|
||||
|
||||
import (
|
||||
"context"
|
||||
"likedream-goframe/internal/db"
|
||||
"likedream-goframe/internal/ent/cptask"
|
||||
"likedream-goframe/internal/utils"
|
||||
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/hibiken/asynq"
|
||||
)
|
||||
|
||||
type ResetTaskHandler struct {
|
||||
}
|
||||
|
||||
// ProcessTask 处理每日重置任务状态
|
||||
func (h *ResetTaskHandler) ProcessTask(ctx context.Context, _ *asynq.Task) (err error) {
|
||||
defer utils.Pass(&err)
|
||||
|
||||
g.Log().Info(ctx, "开始执行每日任务状态重置")
|
||||
|
||||
// 执行重置任务状态
|
||||
db.Global.CpTask.Update().Where(cptask.TaskStatusIn(cptask.TaskStatusDone, cptask.TaskStatusFail)).SetTaskStatus(cptask.TaskStatusNotStart).ExecX(ctx)
|
||||
|
||||
g.Log().Info(ctx, "每日任务状态重置完成")
|
||||
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user