lianlonggangandClaude 0b13de14eb feat: 升级流程增强 + 网关化配置 + 重连循环化
- 配置化:gateway.url/socket.path/download.prefix(网关基础地址统一推导 ws 与下载地址)、
  main.home 主目录(jar/pid 相对它推导)、order.basic;properties 中文 \uXXXX 转义自动还原
- 升级流程:下载 PK 魔数检查与诊断日志;SHA 校验;替换改「改名腾位」绕开 Windows 文件锁延迟;
  nssm stop/start 驱动停止与拉起(pid 强杀回退);升级中标志暂停看门狗拉起避免抢占 jar 锁
- ws_client:重连改循环实现修复递归栈溢出(长时间断线后 maximum recursion depth);
  退避封顶延长至 5 分钟;心跳线程独立修复「暂无心跳数据」
- 新增命令:GET_APIS/HTTP_PROXY(接口测试代理,纯透传鉴权)、GET_LOG_DOWNLOAD(日志下载备用)
- 诊断增强:taskkill/进程退出/替换重试逐次日志

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-03 16:52:34 +08:00

hospital-front-agentPython 版)

医院前置机被控端 Agent,从 hospital-frontKotlin/Java)拆出的独立 Python 实现。

职责

  1. WebSocket 主动连接 B 端管理服务器(注册 / 心跳 / 接收命令)
  2. 守护主程序(健康探测 + 宕机自动拉起 + 告警)
  3. 远程运维命令:健康查询、版本查询、日志查看(尾部 + 实时流)、配置读写、优雅重启、在线升级(含自动回滚)

与 Java 版的消息协议完全一致B 端无需任何修改。

目录结构

hospital-front-agent/
├── agent/
│   ├── main.py            # 入口:组装、PID 文件、信号处理
│   ├── config.py          # conf/agent.properties + AGENT_ 环境变量
│   ├── ws_client.py       # WS 客户端:注册/心跳/指数退避重连
│   ├── dispatcher.py      # 命令分发(10 种命令)
│   ├── main_app_client.py # 环回 HTTP 调主程序 /api/admin
│   ├── process_guard.py   # 看门狗:3 次失败拉起、告警
│   ├── log_stream.py      # 日志实时流:2s 增量轮询、滚动检测
│   └── upgrade.py         # 升级 SOP:下载→校验→备份→停→替换→拉起→健康检查→回滚
├── conf/agent.properties  # 配置示例
└── requirements.txt

运行

依赖 Python 3.10+。

pip install -r requirements.txt
python -m agent.main

工作目录须与主程序部署根目录一致(bin/pid/tmp/backup/ 所在目录), 配置默认从 conf/agent.properties 读取。

配置

conf/agent.properties。优先级:环境变量(AGENT_SERVER_URL 等) > properties > 默认值。

打包(PyInstaller 单 exe

pip install pyinstaller
pyinstaller --onefile --name hospital-agent --paths . agent/main.py

产物 dist/hospital-agent.exe,拷贝到部署根目录 bin/ 下即可。

Windows 服务注册(NSSM 示例)

nssm install HospitalAgent "C:\hospital\bin\hospital-agent.exe"
nssm set HospitalAgent AppDirectory "C:\hospital"
nssm set HospitalAgent AppStdout "C:\hospital\logs\agent-out.log"
nssm set HospitalAgent AppStderr "C:\hospital\logs\agent-err.log"

与 Java 版的差异

  • Agent 为独立 Python 进程,不再占用 bin/hospital-front.jar, 升级替换 jar 时无需维护 Agent jar 副本(Java 版遗留的 hospital-agent.jar 复制逻辑已移除)。
  • 其余命令协议、升级 SOP、看门狗策略、日志流算法均与 Java 版等价。
S
Description
前置机代理
Readme
120 KiB
Languages
Python 100%