升级Uvicorn后FastAPI建立WebSocket连接报websockets无legacy属性如何解决
报错含义
该报错是Uvicorn 0.15.0版本与环境内安装的websockets库版本不兼容导致的。Uvicorn 0.15.0适配的是websockets 10.0及以上版本,该版本的websockets库将旧版握手逻辑迁移到了legacy子模块下;如果当前环境的websockets版本低于10.0,不存在该子模块,Uvicorn调用对应逻辑时就会抛出该属性错误。
可行解决方案
- 方案一:回退Uvicorn版本
无需修改websockets依赖,直接将Uvicorn回退到你之前正常运行的0.13.4版本即可,执行命令:pip install uvicorn==0.13.4 - 方案二:升级websockets版本
保持Uvicorn 0.15.0版本不变,将websockets升级到10.0及以上的适配版本即可,执行命令:pip install --upgrade websockets>=10.0 - 方案三:安装带标准依赖的Uvicorn版本
直接安装对应版本的uvicorn[standard],它会自动安装所有匹配版本的依赖组件,无需手动调整各依赖的版本匹配关系,执行命令:pip install uvicorn[standard]==0.15.0
内容的提问来源于stack exchange,提问作者El tornillo
相关产品推荐
相关产品推荐

