python uvicorn搭建的fastapi应用如何提高并发性能?
网友回复
一、使用 Uvicorn 的多进程 + 多线程模式
启动多个工作进程(Workers)
FastAPI 是基于 ASGI 的异步框架,默认只运行在单个进程中。你可以通过指定 --workers 参数启动多个进程以利用多核 CPU:
uvicorn main:app --host 0.0.0.0 --port 8000 --workers 4
--workers 4 表示启动 4 个 Uvicorn 工作进程;
通常建议设置为 CPU 核心数(或核心数 × 2);
注意:如果你的应用依赖全局状态(如内存缓存),请谨慎使用多进程。
使用 --loop 设置高效的事件循环(推荐使用 uvloop)
Uvicorn 支持多种事件循环实现,其中 uvloop 是最快的选择之一:
pip install uvloop
然后启动时指定:
uvicorn main:app --host 0.0.0.0 --port 8000 --loop uvloop
uvloop 是 asyncio 的高性能替代实现,性能可提升 2~3 倍。
二、合理使用异步与同步函数
FastAPI 支持异步编程模型,但只有在正确使用时才能发挥优势。
异步视图函数(async def)
如果你的接口调用了数据库、外部 API 等 I/O 密集型操作,请使用 async def 定义路由函数:
@app.get("/items/") async def read_items(): data = await async_db_query() return data
这样可以让事件循环调度其他任务,而不是阻塞整个进程。
避免在异步函数中执行耗时同步操作
如果你在 async def 函数中执行了大量 CPU 计算、长时间的同步操作(如 PIL 图像处理),会阻塞整个事件循环。
此时应该:
使用 concurrent.futures.ThreadPoolExecutor 或 ProcessPoolExecutor
或者直接定义为普通函数(不加 ...
点击查看剩余70%