feat: auto-heal — gateway down auto-restart via cron every 5min

This commit is contained in:
hmo
2026-07-19 18:22:45 +08:00
parent 04308facde
commit 6d66cc6cf2
+18
View File
@@ -120,6 +120,24 @@ def run():
# ── XMPP 通道健康采集 ── # ── XMPP 通道健康采集 ──
_collect_xmpp_health(now) _collect_xmpp_health(now)
# ── 自愈:Gateway 宕机自动重启 ──
gateway_ok = any(r["name"] == "zhiwei_gateway" and r["health"]["ok"] for r in results)
if not gateway_ok:
try:
import subprocess as _sp
_sp.run(["sudo", "-n", "pkill", "-9", "-f", "position-analyst.*gateway"],
capture_output=True, timeout=5)
_sp.run(["rm", "-f", "/home/hmo/.hermes/profiles/position-analyst/gateway.lock",
"/home/hmo/.hermes/profiles/position-analyst/gateway.pid"])
_sp.Popen(["/home/hmo/hermes-agent/.venv/bin/python", "-m", "hermes_cli.main",
"-p", "position-analyst", "gateway", "run", "--replace"],
stdout=open("/tmp/hermes_gw_auto.log", "a"),
stderr=open("/tmp/hermes_gw_auto.log", "a"),
start_new_session=True)
print(f"[{now.strftime('%H:%M')}] Auto-heal: Gateway DOWN → restarted")
except Exception as e:
print(f"[{now.strftime('%H:%M')}] Auto-heal error: {e}")
# Handle issues # Handle issues
if issues: if issues:
with open(TODO_FILE, "a", encoding="utf-8") as f: with open(TODO_FILE, "a", encoding="utf-8") as f: