Azure Web App中FastAPI部署后如何启动Uvicorn服务
解决Azure Web App部署FastAPI后无法启动Uvicorn的问题
核心问题
Azure Web App不会自动识别FastAPI的启动逻辑,需明确指定ASGI服务器启动命令,同时确保依赖环境配置正确。
解决方案步骤
1. 确认依赖包含Uvicorn
检查requirements.txt文件,确保已添加Uvicorn依赖(建议指定稳定版本):
uvicorn==0.24.0.post1 # 其他依赖...
若未添加,部署后服务器无法识别uvicorn命令。
2. 配置Azure Web App启动命令
两种配置方式任选其一:
方式一:通过GitHub Actions自动配置
在deploy阶段的「Deploy to Azure Web App」步骤前,添加Azure CLI命令设置启动参数:
- name: Set startup command for Web App uses: azure/cli@v2 with: inlineScript: | az webapp config set --name 'xx-xx-xx' --resource-group <你的资源组名称> --startup-file "uvicorn main:app --host 0.0.0.0 --port ${PORT:-8000}"
替换
<你的资源组名称>为实际Azure资源组名,xx-xx-xx为你的Web App名称。
方式二:Azure Portal手动配置
- 登录Azure门户,进入目标Web App资源
- 左侧导航栏选择「配置」→「常规设置」
- 在「启动命令」栏填入:
uvicorn main:app --host 0.0.0.0 --port ${PORT:-8000} - 点击「保存」并重启Web App
3. 优化部署流程(可选)
原打包解压步骤可简化,azure/webapps-deploy支持直接部署文件:
# 替换build阶段的zip和upload步骤 - name: Upload deployment artifact uses: actions/upload-artifact@v4 with: name: python-app path: | ./* !venv/
# 替换deploy阶段的解压步骤,直接部署 - name: 'Deploy to Azure Web App' uses: azure/webapps-deploy@v3 id: deploy-to-webapp with: app-name: 'xx-xx-xx' slot-name: 'Production' package: ./python-app
4. 关键注意项
- 必须指定
--host 0.0.0.0:否则Uvicorn仅绑定本地回环地址,外部无法访问 - 使用
${PORT:-8000}:Azure Web App会动态分配端口,通过环境变量PORT传递, fallback到8000保证兼容性 - 修改启动命令后必须重启Web App才能生效
内容的提问来源于stack exchange,提问作者Thomas Segato
相关产品推荐
相关产品推荐

