fix: skip execution for overdue tasks and reset next execution time

This commit is contained in:
RecordingTheSmile
2025-08-14 19:19:58 +08:00
parent 67ac23c630
commit d0e45438ae
+8 -1
View File
@@ -70,13 +70,20 @@ func (ts *TaskScanner) scanCpdailyTask() {
minExecuteTime := currentTime.Add(-30 * time.Minute).Unix()
allTasks := db.Global.CpTask.Query().
Where(cptask.NextExecuteTimeLTE(currentTime.Unix()), cptask.NextExecuteTimeGTE(minExecuteTime), cptask.NextExecuteTimeNotNil()).
Where(cptask.NextExecuteTimeLTE(currentTime.Unix()), cptask.NextExecuteTimeNotNil()).
Select(cptask.FieldID, cptask.FieldExecuteHour, cptask.FieldExecuteMinute).
AllX(ts.ctx)
var failedIDS []int64
for _, task := range allTasks {
// 30分钟之前的任务不再执行,但是要重置下次执行时间
if *task.NextExecuteTime < minExecuteTime {
originExecuteTime := time.Unix(*task.NextExecuteTime, 0).In(cst.TimeZoneShangHai).Format("2006-01-02 15:04:05")
g.Log().Debugf(ts.ctx, "任务ID %d 已过期,原来预计执行时间:%s,跳过执行", task.ID, originExecuteTime)
continue
}
payload := &CpdailyTaskPayload{
CpTaskID: task.ID,
}