1.基础用法
1 | from fastapi import FastAPI |
- 通过
WSGIMiddleware包装WSGI应用(如Flask/Django)实现集成 - 使用
app.mount()将WSGI应用挂载到特定路径下(如/v1) - 处理流程:
graph TD A[客户端请求] --> B{路径匹配} B -->|匹配/v1前缀| C[WSGIMiddleware处理] C --> D[Flask应用响应] B -->|其他路径| E[FastAPI原生路由处理]
2.核心特性
2.1 混合架构支持
- FastAPI原生路由处理异步请求和API文档
- Flask/Django处理传统同步请求或已有功能模块
- 示例请求分发:
http://localhost:8000/v1/→ Flask响应http://localhost:8000/api→ FastAPI响应
2.2 中间件隔离
- WSGI应用与FastAPI应用配置相互独立
- 各自维护路由系统、中间件和异常处理器
- 支持多层嵌套挂载(如
/v1/flask下再挂载Django应用)
3.生产环境建议
部署架构:
1
gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app
- 使用Gunicorn作为进程管理器,Uvicorn处理ASGI请求
- 根据CPU核心数设置worker数量(建议4核服务器启动4 workers)
性能优化:
- FastAPI路由优先处理高频接口
- 对WSGI应用启用缓存中间件减少计算开销
迁移策略:
- 逐步将WSGI应用中的关键接口迁移到FastAPI
- 使用统一反向代理(如Nginx)管理流量分发
测试命令示例:
1
2
3
4
5
6
7
8 # 启动服务
uvicorn main:app --reload --port 8000
# 测试Flask路由
curl http://localhost:8000/v1/?name=FastAPI
# 测试FastAPI路由
curl http://localhost:8000/api