Azure App Service中FastAPI服务器未按指定端口运行问题排查
问题
我在Azure App Service上部署FastAPI服务器,通过关联GitHub代码(未使用容器),设置启动命令为python -m uvicorn routes:app --host 0.0.0.0 --port 8000。访问https://fastapi-sappv01.azurewebsites.net:8000/时出现错误;同时我的Streamlit前端向服务器发送请求时触发requests.exceptions.ConnectionError报错。现咨询:
- 如何调试该问题?
- 如何查看服务器端日志(含代码中的print语句)?
- 若不指定--port参数,服务器默认运行在哪个端口?
解答
1. 调试问题的步骤
- 修正访问端口:Azure App Service对外仅开放80(HTTP)和443(HTTPS)端口,直接访问8000端口会失败。应使用
https://fastapi-sappv01.azurewebsites.net/访问服务,前端请求地址也需同步修改,不要附加端口号。 - 验证启动命令路径:确认
routes.py文件位于项目根目录,若文件在子目录,需调整启动命令的模块路径(例如src.routes:app)。 - 本地复现验证:在本地环境使用相同启动命令运行服务,测试接口是否正常,排除代码本身的逻辑问题。
- 核对Python版本:确保Azure App Service配置的Python版本与本地开发环境一致,避免版本兼容性错误。
- 检查部署状态:在Azure门户查看App Service的部署记录,确认GitHub代码已成功部署,无部署失败提示。
2. 查看服务器端日志的方法
- 实时日志流:进入Azure门户的目标App Service资源页,左侧菜单选择「日志」→「日志流」,可实时查看服务运行日志,包括代码中的
print输出和uvicorn框架日志。 - Kudu控制台查看日志文件:在App Service的「高级工具」中打开Kudu控制台,进入
LogFiles目录,可查看具体的日志文件(如python_django.log或uvicorn相关日志)。 - 持久化日志存储:在「日志」→「应用程序日志」中配置存储账户,开启日志持久化,日志会保存到指定存储账户,方便后续回溯查看。
3. uvicorn默认端口
uvicorn未指定--port参数时,默认运行在8000端口。需要注意的是,Azure App Service会自动将外部80/443端口的请求转发到应用监听的端口,建议启动命令中使用--port $PORT读取环境变量,适配平台默认配置。
内容的提问来源于stack exchange,提问作者Ani
相关产品推荐
相关产品推荐

