Android Termux环境安装Uvicorn报错及FastAPI热重载实现咨询
Termux下FastAPI热重载可用方案
错误根源
Termux官方源提供的Python包未编译内置_posixshmem模块,Uvicorn、Hypercorn默认的热重载功能依赖多进程共享内存机制,触发该依赖缺失报错。
方案1:指定Uvicorn重载引擎为stat(最便捷)
Uvicorn支持切换重载引擎,stat引擎采用单进程轮询检测文件变更,不需要多进程共享内存依赖,可直接规避报错。
- 命令行启动写法:
uvicorn main:app --reload --reload-engine stat
- 代码内调用写法:
import uvicorn from fastapi import FastAPI app = FastAPI() # 你的接口代码写在这里 if __name__ == "__main__": uvicorn.run( "main:app", host="0.0.0.0", port=8000, reload=True, reload_engine="stat", access_log=False )
方案2:使用watchexec工具实现自动重启
如果方案1不生效,可以通过通用文件变更监听工具触发服务重启,效果和原生热重载一致:
- 先在Termux中安装watchexec:
pkg update && pkg install watchexec
- 运行监听命令,只要当前目录下的py文件发生修改就会自动重启Uvicorn:
watchexec -e py -- uvicorn main:app
方案3:降级Uvicorn到0.18.x版本
Uvicorn 0.19版本之后才默认使用多进程重载,0.18.x版本的热重载为单进程实现,不需要共享内存依赖:
pip install uvicorn==0.18.3
安装完成后直接运行原有命令即可正常使用热重载:
uvicorn main:app --reload
内容的提问来源于stack exchange,提问作者Captain America
相关产品推荐
相关产品推荐

