Archived
feat(web): FastAPI 脚手架(strangler 迁移起点)
新增 web/ 包,与 Flask 应用并存、共享 core/: - web/app.py create_app 工厂;已迁移路由挂 /api/v1,可挂遗留 Flask 兜底 - web/main.py uvicorn 入口(sys.path 补项目根) - web/response.py 响应工具,与 Flask APIResponse 的 JSON 契约逐字段对齐 - web/routers/system.py 迁移样板:/api/v1/health、/api/v1/api/info - requirements-fastapi.txt 迁移目标依赖(不影响当前生产 Flask 部署) 验证: - 奇偶校验(.zcode/refactor/parity.py)Flask /health vs FastAPI /api/v1/health、 /api/info vs /api/v1/api/info —— 状态码/顶层键/响应体全一致 - uvicorn 真实启动 200;Flask fallback 挂载下 /api/v1/* 走 FastAPI、/* 走 Flask 同为 200 当前仅样板端点;生产服务器切换与状态统一见后续迁移阶段。
This commit is contained in:
1 parent
c2a8da3e43
commit
41356e89c4
7 files changed
+198
No files matched your search
+22
@@ -0,0 +1,22 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""FastAPI 服务入口(uvicorn)。
|
||||
|
||||
开发期启动: .venv/Scripts/python.exe web/main.py
|
||||
生产切换前需先将状态/任务模型与既有 Flask 进程统一(见迁移计划阶段 C)。
|
||||
"""
|
||||
import os
|
||||
import sys
|
||||
|
||||
import uvicorn
|
||||
|
||||
# 直接以 `python web/main.py` 运行时,sys.path[0] 是 web/ 而非项目根——
|
||||
# 补上项目根,保证 `import core` / `import music_api` / `import web.app` 可用。
|
||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||
|
||||
from web.app import create_app
|
||||
|
||||
# 生产可在联调期临时打开 Flask 兜底(未迁移路由回落到遗留应用)
|
||||
app = create_app(serve_flask_fallback=os.environ.get('FASTAPI_FLASK_FALLBACK') == '1')
|
||||
|
||||
if __name__ == '__main__':
|
||||
uvicorn.run(app, host='0.0.0.0', port=5000, log_level='info')
|
||||
Reference in new issue
Block a user