You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用uvicorn+uvloop部署FastAPI时,aioredis会用uvloop还是原生asyncio?

当FastAPI用uvicorn指定uvloop启动时,aioredis会使用uvloop事件循环吗?

答案是肯定的,aioredis会直接使用你通过uvicorn指定的uvloop事件循环,不需要额外做任何配置。

为什么会这样?因为在Python的asyncio生态里,事件循环是和当前运行上下文绑定的——当你用uvicorn main:app --workers 2 --loop uvloop启动服务时,uvicorn会把每个worker进程的默认事件循环替换成uvloop。而aioredis作为基于asyncio标准编写的库,它在创建客户端和执行异步操作时,会自动复用当前环境中活跃的事件循环。

看你提供的代码(这里补全了漏写的aioredis导入):

from fastapi import FastAPI
import aioredis

app = FastAPI()


@app.get('/get/{key}')
async def get_from_redis(key):
    redis = aioredis.from_url('redis://127.0.0.1')
    value = await redis.get(key)  # 这里的异步操作完全跑在uvloop上
    return {'response': value}

当请求进入/get/{key}接口时,整个异步函数的执行都是在uvicorn配置的uvloop事件循环里完成的,包括aioredis的Redis操作。

额外提一句:uvloop是asyncio事件循环的高性能替代实现,它完全兼容asyncio的API规范,所以所有基于asyncio的库(比如FastAPI、aioredis)都能无缝适配,不需要修改任何业务代码就能享受到uvloop带来的性能提升。

内容的提问来源于stack exchange,提问作者AndrePer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 17:36:11