python 3.12 对 fastapi 无开箱即用性能提升,关键在于 uvicorn 显式启用 uvloop + httptools、避免 async 路由中混用同步调用(如 requests、sqlite3、time.sleep),并合理使用异步驱动与工具。

直接上结论:Python 3.12 对 FastAPI 本身没有“开箱即用”的性能加成,真正影响响应速度的,是 Uvicorn 的 event loop 实现、async I/O 库的兼容性、以及你是否在 async def 路由里混进了同步调用。
Uvicorn 必须显式启用 uvloop + httptools
Python 3.12 默认使用标准 asyncio 事件循环,而它在高并发下比 uvloop 慢 2–4 倍。FastAPI 不会自动帮你切——必须手动指定。
-
uvicorn main:app --workers 8 --loop uvloop --http httptools --host 0.0.0.0 --port 8000是生产最低配置,--workers建议设为 CPU 核心数 × 2(例如 8 核机器用 16) - Windows 开发时跳过
--loop uvloop,但要在requirements.txt中写成uvloop; sys_platform != "win32",避免 CI 失败 - 不加
--http httptools时,Uvicorn 用纯 Python 的h11解析 HTTP,吞吐量下降约 15%~20%
async def 路由里禁止出现 requests / sqlite3 / time.sleep
Python 3.12 的 asyncio 仍无法自动将同步阻塞调用转为异步。你在 async def 里写 requests.get(),它就会掉进 run_in_threadpool,默认线程池只有 40 个线程,一满就排队。
- HTTP 调用必须换
httpx.AsyncClient,不是httpx.Client - 数据库必须用异步驱动:
asyncpg(PostgreSQL)、aiosqlite(SQLite)、或SQLModel配合create_async_engine - 文件读写不能用
open(),改用aiofiles.open()或await asyncio.to_thread(open, ...) -
time.sleep()绝对禁用;CPU 密集型操作(如大 JSON 解析、图像处理)应移出async def,改用普通def+BackgroundTasks.add_task()
Pydantic v2 模型序列化在 Python 3.12 下更慢?别信
实测显示,Pydantic v2.9+ 在 Python 3.12 上的 .model_dump() 和 .model_dump_json() 性能与 3.11 相当,甚至略优。所谓“变慢”,通常是因为你启用了 validate_default=True 或在模型字段里写了 default_factory=lambda: expensive_call()。
- 高频返回场景(如列表接口),优先用
return {"items": [...]}而非response_model=List[Item],省去 Pydantic 验证和序列化两道开销 - 若必须用模型,确保
Item.model_config = {"frozen": True, "validate_assignment": False},关闭运行时赋值校验 - 避免在模型中定义
@computed_field或自定义__init__,它们会在每次实例化时触发额外逻辑
中间件里读 request.body() 会破坏后续依赖
这是最容易被忽略的坑:你在异步中间件里写了 body = await request.body(),后面路由再调 await request.json() 就会报 Request body not found——因为 ASGI 的 request stream 只能读一次。
- 正确做法是读完后存到
request.state.raw_body = body,后续依赖统一从request.state取 - 如果要解析 JSON,直接用
await request.json(),它内部已做异步封装;别自己json.loads(body.decode()) - 审计日志类中间件,建议只记录 method/path/headers,body 留给特定路由按需解析,避免全量解析拖慢所有请求
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











