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():