Azure WebApp部署FastAPI启动失败:app.py位于test文件夹
解决Azure WebApp部署FastAPI(app在子目录)的启动命令问题
问题排查与解决方案
1. 先确认依赖是否真的安装成功
Azure WebApp的Python环境可能存在路径隔离问题,别光看DevOps管道的日志,直接连到实例验证:
- 进入WebApp的高级工具 > SSH,执行
pip list查看是否有uvicorn。如果没有,说明部署管道的pip install -r requirements.txt步骤可能没生效——检查管道里的命令是否指向了正确的requirements.txt路径,比如如果文件在根目录,命令要确保是在根目录下执行的。
2. 修正启动命令的正确写法
当app.py在test子目录时,正确的启动命令应该是:
python -m uvicorn test.app:app --host 0.0.0.0 --port 8000
注意两点:
- 必须显式指定
--port 8000,Azure WebApp默认监听这个端口,不指定的话服务无法被外部访问 - 确保
test目录下有__init__.py(空文件就行),让Python把这个目录识别为合法模块,否则test.app的写法会报错
3. 检查启动命令的配置与脚本权限
如果用startup.sh脚本:
- 脚本内容要写对:
#!/bin/bash python -m uvicorn test.app:app --host 0.0.0.0 --port 8000 - 上传后必须给脚本加执行权限:在SSH里执行
chmod +x startup.sh,再把WebApp的启动命令设为./startup.sh
4. 看日志找具体错误
别盯着“应用程序错误”发呆,直接看日志流:
- 进入WebApp > 监测 > 日志流,实时查看启动时的报错信息——比如是模块找不到、端口被占,还是依赖缺失,日志会给明确提示,这是最快定位问题的方法
5. 确认项目结构
你的项目结构必须是这样的:
根目录/ ├── test/ │ ├── __init__.py │ └── app.py ├── requirements.txt
且app.py里的FastAPI实例必须是app = FastAPI(),这样test.app:app才能正确指向这个实例
内容的提问来源于stack exchange,提问作者Sanobar Lambey
相关产品推荐
相关产品推荐

