pms-ws 启动横幅与联调面板改读运行参数表, 与运行逻辑同源

pms-ws 的启动横幅原来直接读 settings (.env 层) 的 PMS_QMT_WS_ENABLED 与
PMS_QMT_WS_URL, 而进程实际的启停与端点由运行参数表 pms_runtime_param 决定。
两个源不一致时横幅就说反话: 参数表里通道开着, 横幅却打「未启用 (空转)」,
下一行紧接着就是握手成功、ONLINE、心跳、每 5 分钟拉快照。

改成与 _refresh_params 同一个取值源 (param_store 优先, 读不到退回 .env 初值,
并明说这行是初值)。同批把 ws_smoke.py status 面板的端点显示一并对齐 ——
同一类误导, 排错时最先看的就是它。

只改日志与取值源, 不碰连接、握手与下发逻辑。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
zlt 2026-09-09 16:10:39 +08:00
parent 4e8e2e4ac4
commit e30b333a1c
2 changed files with 22 additions and 4 deletions

View File

@ -976,8 +976,24 @@ def _is_conn_error(e: BaseException) -> bool:
async def main(): async def main():
logger.info("pms-ws 启动 · 协议 V1.0 · 端点 %s · 模式 %s", settings.PMS_QMT_WS_URL, """启动横幅。取值源必须与 _refresh_params 一致 —— 启停与端点的真值在参数表
"启用" if settings.PMS_QMT_WS_ENABLED else "未启用 (空转)") (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() await WsRunner().run()

View File

@ -46,7 +46,7 @@ def _fmt_age(dt):
def cmd_status(args): def cmd_status(args):
from app.repo import qmt_repo from app.repo import qmt_repo
from app.services import dispatcher from app.services import dispatcher, param_store
from config.settings import settings from config.settings import settings
st = qmt_repo.get_state() st = qmt_repo.get_state()
@ -54,7 +54,9 @@ def cmd_status(args):
print(BAR) print(BAR)
print(f"ws 通道状态 · {datetime.now():%Y-%m-%d %H:%M:%S}") print(f"ws 通道状态 · {datetime.now():%Y-%m-%d %H:%M:%S}")
print(BAR) 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()}" print(f" 下发模式 PMS_DISPATCH_MODE = {dispatcher.mode()}"
f" (联调用本工具, 不必切到 ws)") f" (联调用本工具, 不必切到 ws)")
print(f" pms-ws 进程 {'在线' if ch['process_alive'] else '**不在线**'}" print(f" pms-ws 进程 {'在线' if ch['process_alive'] else '**不在线**'}"