feat: 事件异常 Worker 巡检告警

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-21 18:22:52 +08:00
co-authored by Cursor
parent 1bab19f1a2
commit fc1b85113d
3 changed files with 343 additions and 0 deletions
+17
View File
@@ -112,6 +112,7 @@ class WorkerRuntime:
threading.Thread(target=self._archive_loop, name="archive-loop", daemon=True),
threading.Thread(target=self._wshoto_poll_loop, name="wshoto-poll", daemon=True),
threading.Thread(target=self._deal_followup_loop, name="deal-followup", daemon=True),
threading.Thread(target=self._event_exception_loop, name="event-exception", daemon=True),
threading.Thread(target=self._pdf_loop, name="pdf-loop", daemon=True),
]
for t in self._threads:
@@ -290,6 +291,22 @@ class WorkerRuntime:
logger.exception("协商再问轮询失败")
self._stop.wait(60.0)
def _event_exception_loop(self) -> None:
"""
HTTP 槽巡检事件异常。独立线程,不占回调、不与 soffice 串队。
"""
from agent.jobs.event_exception_poll import poll_event_exceptions
while not self._stop.is_set():
try:
self.http_jobs.run(
lambda: poll_event_exceptions(settings=self.settings),
label="event-exception",
)
except Exception:
logger.exception("事件异常巡检失败")
self._stop.wait(60.0)
def _pdf_loop(self) -> None:
"""仅 LibreOffice 单槽消费 PDF Stream。"""
if not self.redis: