From d0e45438aeb6652d99f1db07f2ed68056c04dca8 Mon Sep 17 00:00:00 2001 From: RecordingTheSmile <17124941+RecordingTheSmile@users.noreply.github.com> Date: Thu, 14 Aug 2025 19:19:58 +0800 Subject: [PATCH] fix: skip execution for overdue tasks and reset next execution time --- internal/schedule/scanner.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/internal/schedule/scanner.go b/internal/schedule/scanner.go index d359905..4b12508 100644 --- a/internal/schedule/scanner.go +++ b/internal/schedule/scanner.go @@ -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, }