fix: 盘中自检增加进程级检查(price_monitor/xiaoguo_scanner)
- price_monitor:pgrep进程 + 最近10分钟事件数双重验证 - xiaoguo_scanner:pgrep进程 + 今日数据 + API可达三重验证 - 避免"停了两天不知道"的情况
This commit is contained in:
@@ -60,16 +60,37 @@ def db_today_count(table, date_col):
|
|||||||
|
|
||||||
|
|
||||||
def check_xiaoguo():
|
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")
|
scans_today = db_today_count("xiaoguo_scan_tracker", "last_scanned_at")
|
||||||
log(scans_today > 0, f"小果扫描今日数据: {scans_today}条(需>0)")
|
log(scans_today > 0, f"小果扫描今日数据: {scans_today}条(需>0)")
|
||||||
|
# API
|
||||||
api_ok = check_http("http://192.168.1.122:18003/v1/models")
|
api_ok = check_http("http://192.168.1.122:18003/v1/models")
|
||||||
log(api_ok, "小果LLM API不可达")
|
log(api_ok, "小果LLM API不可达")
|
||||||
|
|
||||||
|
|
||||||
def check_price_monitor():
|
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():
|
def check_bots():
|
||||||
|
|||||||
Reference in New Issue
Block a user