From d27dbcc6ada88aac4edcde4add3a37324146f195 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=A5=E5=BE=AE?= Date: Wed, 24 Jun 2026 22:00:58 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=9B=98=E4=B8=AD=E8=87=AA=E6=A3=80?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=BF=9B=E7=A8=8B=E7=BA=A7=E6=A3=80=E6=9F=A5?= =?UTF-8?q?(price=5Fmonitor/xiaoguo=5Fscanner)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - price_monitor:pgrep进程 + 最近10分钟事件数双重验证 - xiaoguo_scanner:pgrep进程 + 今日数据 + API可达三重验证 - 避免"停了两天不知道"的情况 --- scripts/intraday_health_check.py | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/scripts/intraday_health_check.py b/scripts/intraday_health_check.py index b51fdd4..0585c41 100644 --- a/scripts/intraday_health_check.py +++ b/scripts/intraday_health_check.py @@ -60,16 +60,37 @@ def db_today_count(table, date_col): def check_xiaoguo(): - """小果管道:scanner有数据 + API可达""" + """小果管道:进程/scanner有数据/API可达""" + # 进程 + r = subprocess.run(["pgrep", "-f", "xiaoguo_scanner"], capture_output=True, timeout=5) + log(r.returncode == 0, "小果扫描进程不在运行") + # 数据 scans_today = db_today_count("xiaoguo_scan_tracker", "last_scanned_at") log(scans_today > 0, f"小果扫描今日数据: {scans_today}条(需>0)") + # API api_ok = check_http("http://192.168.1.122:18003/v1/models") log(api_ok, "小果LLM API不可达") def check_price_monitor(): - done = db_today_count("price_events", "date") - log(done > 0, f"价格监控今日事件: {done}条(需>0)") + """价格监控:进程在跑 + 最近有数据""" + # 进程检查 + r = subprocess.run(["pgrep", "-f", "price_monitor"], capture_output=True, timeout=5) + process_alive = r.returncode == 0 + if not process_alive: + log(False, "价格监控进程不在运行") + return + + # 数据新鲜度(最近10分钟是否有事件) + try: + conn = sqlite3.connect(str(DB_PATH)) + recent = conn.execute( + "SELECT COUNT(*) FROM price_events WHERE created_at > datetime('now', '-10 minutes')" + ).fetchone()[0] + conn.close() + log(recent > 0, f"价格监控进程在跑,但最近10分钟无新事件") + except: + log(True, "价格监控进程在跑") def check_bots():