diff --git a/app/ws/runner.py b/app/ws/runner.py index 433a5f8..cc61e32 100644 --- a/app/ws/runner.py +++ b/app/ws/runner.py @@ -976,8 +976,24 @@ def _is_conn_error(e: BaseException) -> bool: async def main(): - logger.info("pms-ws 启动 · 协议 V1.0 · 端点 %s · 模式 %s", settings.PMS_QMT_WS_URL, - "启用" if settings.PMS_QMT_WS_ENABLED else "未启用 (空转)") + """启动横幅。取值源必须与 _refresh_params 一致 —— 启停与端点的真值在参数表 + (pms_runtime_param), .env 里那份只是文件初值。 + + 2026-09-09: 这里原来直接读 settings, 而参数表里通道是开的, 于是横幅打出「未启用 + (空转)」, 紧接着就是握手成功、ONLINE、心跳、每 5 分钟拉快照 —— 日志自己打自己的脸。 + 读错源的日志比没有日志更坏: 它会把排错的人往「通道没开」这条死路上带。 + """ + def _banner(): + return (param_store.get("PMS_QMT_WS_URL", settings.PMS_QMT_WS_URL), + param_store.get_bool("PMS_QMT_WS_ENABLED", False)) + try: + url, enabled = await _db(_banner) + except Exception as e: # 打一行横幅而已, 读不到参数表绝不能挡住启动 + url, enabled = settings.PMS_QMT_WS_URL, settings.PMS_QMT_WS_ENABLED + logger.warning("横幅取参数表失败, 改按 .env 初值打印 (以运行时参数为准): %s", + _brief_err(e)) + logger.info("pms-ws 启动 · 协议 V1.0 · 端点 %s · 模式 %s", url, + "启用" if enabled else "未启用 (空转)") await WsRunner().run() diff --git a/scripts/ws_smoke.py b/scripts/ws_smoke.py index 9a9f98f..84e67ca 100644 --- a/scripts/ws_smoke.py +++ b/scripts/ws_smoke.py @@ -46,7 +46,7 @@ def _fmt_age(dt): def cmd_status(args): from app.repo import qmt_repo - from app.services import dispatcher + from app.services import dispatcher, param_store from config.settings import settings st = qmt_repo.get_state() @@ -54,7 +54,9 @@ def cmd_status(args): print(BAR) print(f"ws 通道状态 · {datetime.now():%Y-%m-%d %H:%M:%S}") print(BAR) - print(f" 端点 {settings.PMS_QMT_WS_URL}") + # 端点的真值在参数表, .env 那份只是初值 —— 与 pms-ws 实际连接用的取值源保持一致, + # 否则这块面板会在两边不一样时显示一个谁也没在用的地址 (2026-09-09 同批修横幅) + print(f" 端点 {param_store.get('PMS_QMT_WS_URL', settings.PMS_QMT_WS_URL)}") print(f" 下发模式 PMS_DISPATCH_MODE = {dispatcher.mode()}" f" (联调用本工具, 不必切到 ws)") print(f" pms-ws 进程 {'在线' if ch['process_alive'] else '**不在线**'}"