From 3fafd0854587e4be65f9b06f55c5994de18af80c Mon Sep 17 00:00:00 2001 From: lookt Date: Tue, 15 Sep 2026 20:26:01 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=87=87=E9=9B=86=E5=BE=AA=E7=8E=AF?= =?UTF-8?q?=E5=8D=95=E8=BD=AE=E5=AE=B9=E9=94=99=20+=20=E4=BA=8B=E4=BB=B6?= =?UTF-8?q?=E6=B5=81=E6=B0=B4=E7=9B=AE=E5=BD=95=E8=87=AA=E5=8A=A8=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=EF=BC=88Linux=20=E9=A6=96=E5=90=AF=E8=87=B4=E5=91=BDb?= =?UTF-8?q?ug=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/realtime/collector.py | 6 +++++- src/web/server.py | 8 +++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/realtime/collector.py b/src/realtime/collector.py index b8a88bc..b263907 100644 --- a/src/realtime/collector.py +++ b/src/realtime/collector.py @@ -42,6 +42,7 @@ class TimelineCollector: self.emit = emit # callable(dict) self.db_path = str(db_path or DB) self.state = {'date': datetime.now().strftime('%Y-%m-%d')} + FEED.parent.mkdir(parents=True, exist_ok=True) # 事件流水目录 self.priors = {} self._load_priors() @@ -59,7 +60,10 @@ class TimelineCollector: f.write(json.dumps(rec, ensure_ascii=False) + '\n') except OSError: pass - self.emit(rec) + try: + self.emit(rec) + except Exception: + pass # 回调异常不允许杀死采集循环 # ---------- 实证先验(skill 注入) ---------- diff --git a/src/web/server.py b/src/web/server.py index 59b558f..7d44108 100644 --- a/src/web/server.py +++ b/src/web/server.py @@ -47,7 +47,13 @@ async def collector_task(_app): async def poll(): while True: - await loop.run_in_executor(None, collector.one_cycle) + try: + await loop.run_in_executor(None, collector.one_cycle) + except asyncio.CancelledError: + raise + except Exception: + import traceback + traceback.print_exc() await asyncio.sleep(60) task = asyncio.create_task(poll())