Python 现代开发学习笔记

(二十)区分发布、重启与回退

服务启动时把 v1 的数组与权重装进内存。离线训练命令发布 v2,磁盘上的 current.json 变成 v2;进程中已有的 Predictor 仍是 v1,继续返回 version="v1"。

# 先验证已有 v1 文件,然后在另一个终端启动服务。
uv run model-lab verify v1
uv run uvicorn modeldelivery.web:create_app --factory --port 8782
# 服务运行时发布新版本;观察已有接口仍返回 v1。
uv run model-lab train --version v2 --seed 8
# 结束旧服务并重新执行启动命令,新进程读取 current.json 中的 v2。
# 需要回退时先改变指向,再重新启动服务。
uv run model-lab activate v1

回退用同一个道理:先验证并激活旧目录,再重启工作进程。每次完成后请求 /model 与 /predict,核对返回版本。一次启动期间让模型对象保持完整,能避免某次请求混用新权重和旧缩放。

按进程 A、B、C 逐步追踪:发布 v2 不改 A,重启 B 才读 v2,激活 v1 后重启 C 完成回退

笔记正文与全部题解 · Ctrl / ⌘ K