+
58
-

python uvicorn搭建的fastapi应用如何提高并发性能?

python uvicorn搭建的fastapi应用如何提高并发性能?


网友回复

+
28
-

 一、使用 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%

我知道答案,我要回答