新增定时任务重启漏执行补偿机制

变更项:1) 系统任务与插件调度重载后基于应执行时间和执行日志对账,判定是否漏执行。2) 仅在应执行时间已过且日志未覆盖时补跑一次,避免重复补偿。3) system_job_db 与 plugin_schedule_db 新增 get_latest_log_time 查询。4) 增加容差窗口与中文注释,降低误判概率。
This commit is contained in:
liuwei
2026-04-17 09:38:15 +08:00
parent 6af91756d3
commit 3226fabcec
4 changed files with 216 additions and 2 deletions

View File

@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
import json
from datetime import datetime
from typing import Any, Dict, List, Optional
from loguru import logger
@@ -169,3 +170,18 @@ class SystemJobDBOperator(BaseDBOperator):
elif detail is None:
row["detail_json"] = {}
return rows
def get_latest_log_time(self, job_key: str) -> Optional[datetime]:
"""获取任务最新一次执行日志时间。"""
row = self.execute_query(
"""
SELECT triggered_at
FROM t_system_job_logs
WHERE job_key = %s
ORDER BY triggered_at DESC
LIMIT 1
""",
(str(job_key),),
fetch_one=True,
) or {}
return row.get("triggered_at")