fix: skip execution for overdue tasks and reset next execution time
This commit is contained in:
@@ -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,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user