一、异步接口设计
# main.py
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
import asyncio
app = FastAPI()
app.add_middleware(CORSMiddleware, allow_origins=["*"])
# 异步数据库查询模拟
async def async_db_query(user_id: int):
await asyncio.sleep(0.1) # 模拟IO操作
return {"user_id": user_id, "name": "Alice"}
# 异步API接口
@app.get("/user/{user_id}")
async def get_user(user_id: int):
data = await async_db_query(user_id)
return {"code": 0, "data": data}
二、生产级部署配置
# 1. 依赖安装
pip install "fastapi[all]" uvloop python-multipart
# 2. Dockerfile
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
# 3. 启动命令(使用Uvicorn+UVLoop)
uvicorn main:app --host 0.0.0.0 --port 8000 --workers 4 --loop uvloop
三、性能优化要点
# 1. 使用Depends注入异步依赖
async def get_db():
db = AsyncSessionLocal()
try:
yield db
finally:
await db.close()
@app.get("/items")
async def read_items(db: AsyncSession = Depends(get_db)):
items = await db.query(Item).all()
return items
# 2. 配置GZip中间件
from fastapi.middleware.gzip import GZipMiddleware
app.add_middleware(GZipMiddleware, minimum_size=1000)
四、部署验证
# 压力测试(安装httpx)
pip install httpx[http2]
httpx http://localhost:8000/user/1 -c 100 -t 30
# 预期结果:每秒处理请求数(RPS)可达2000+
总结
FastAPI 3.0 通过 async/await
原生支持和高效中间件,配合 Uvicorn+UVLoop 部署,可轻松实现异步高并发接口。生产环境建议搭配 Nginx 反向代理、Prometheus 监控和 Docker Swarm/Kubernetes 集群管理,进一步提升稳定性与扩展性。