This repository has been archived on 2026-10-02. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
NeteaseUrl/web/main.py
T
snowy-yang 41356e89c4 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

当前仅样板端点;生产服务器切换与状态统一见后续迁移阶段。
2026-09-26 00:17:56 +08:00

23 lines
832 B
Python

# -*- 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')