使用Azure DevOps部署Python应用至Azure App Service后遇504超时问题
解决Azure DevOps部署Python应用到Linux App Service的504网关超时问题
以下是针对该问题的具体排查和修复步骤:
1. 确认应用监听配置
- 检查Python代码中的监听设置:必须绑定
0.0.0.0而非127.0.0.1,否则外部无法访问应用。例如:
Flask应用:
Django应用:app.run(host='0.0.0.0', port=8000)python manage.py runserver 0.0.0.0:8000 - 确保
WEBSITES_PORT应用设置的端口和代码完全匹配,设置后强制重启App Service使其生效。
2. 对齐Azure DevOps流水线的启动命令
VS Code能成功发布,说明它自动生成了正确的启动命令,直接将该命令复制到流水线配置中:
- Zip部署:在
AzureWebApp@1任务中添加startUpCommand参数,以Flask使用Gunicorn启动为例:- task: AzureWebApp@1 inputs: azureSubscription: '<你的订阅>' appName: '<你的应用名>' package: '$(Build.ArtifactStagingDirectory)/**/*.zip' startUpCommand: 'gunicorn --bind=0.0.0.0:8000 app:app' - Docker部署:检查Dockerfile的
CMD/ENTRYPOINT是否正确配置,示例:
确保EXPOSE 8000 CMD ["gunicorn", "--bind=0.0.0.0:8000", "app:app"]EXPOSE端口和应用监听端口一致,且启动命令绑定0.0.0.0。
3. 查看日志定位启动故障
- 打开App Service的日志流,或通过Kudu(高级工具)查看
/home/LogFiles下的日志文件:- Zip部署重点查看
application.log,排查是否有依赖安装失败、启动命令报错等问题。 - Docker部署查看
docker.log,确认容器是否成功启动、应用在容器内是否正常运行。
- Zip部署重点查看
- 使用Azure CLI实时查看日志,快速捕捉启动时的错误:
az webapp log tail --name <你的应用名> --resource-group <你的资源组名>
4. 检查运行环境一致性
- 确认App Service的Python版本和本地开发环境完全一致(比如本地用Python 3.9,就设置App Service运行时为Python 3.9)。
- 开启App Service的始终开启选项,避免应用因闲置被系统回收。
- 查看App Service的“指标”面板,检查CPU、内存使用率是否过高,导致应用无法响应请求。
5. 验证容器内应用可访问性(Docker部署)
通过Kudu的SSH连接到容器,执行以下命令测试应用是否能正常响应:
curl localhost:8000
如果返回错误,说明应用在容器内未正常启动,需排查代码依赖或启动命令;如果能正常返回响应,再检查端口映射和WEBSITES_PORT配置是否正确。
内容的提问来源于stack exchange,提问作者vikkz
相关产品推荐
相关产品推荐

