新增定时任务重启漏执行补偿机制
变更项:1) 系统任务与插件调度重载后基于应执行时间和执行日志对账,判定是否漏执行。2) 仅在应执行时间已过且日志未覆盖时补跑一次,避免重复补偿。3) system_job_db 与 plugin_schedule_db 新增 get_latest_log_time 查询。4) 增加容差窗口与中文注释,降低误判概率。
This commit is contained in:
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user