Azure Web App部署Streamlit卡在‘Please wait...’求助
我创建了Linux/Python3.7环境的B1层级Azure Web App Service,将Azure Git接入部署中心后应用构建正常,已设置启动命令为python -m streamlit run app.py --server.port 8000 --server.address 0.0.0.0。应用能启动且可访问URL,但Streamlit页面始终卡在“Please wait...”状态。
我尝试启用WebSockets解决问题,因门户未找到对应选项,使用命令az webapp config set --web-sockets-enabled true --name MyAppName --resource-group MyResourceGroup启用,输出JSON显示"webSocketsEnabled": true,。调整门户各类配置选项后仍无效。
注:应用在本地运行正常,且本地无Docker权限,无法通过Docker镜像构建部署。
补充:Chrome控制台报错:WebSocket connection to '' failed: WebSocket is closed before the connection is established.,但已通过命令启用WebSocket。
请问我哪里操作有误?
1. 完善启动命令
修改启动命令为:
python -m streamlit run app.py --server.port 8000 --server.address 0.0.0.0 --server.headless true --server.enableWebsockets true
--server.headless true是服务器环境必需配置,避免Streamlit尝试启动GUI;--server.enableWebsockets true强制启用WebSocket支持,确保连接逻辑正常。
2. 配置Azure应用设置
在Azure门户的Web App→配置→应用程序设置中添加以下两项:
WEBSITE_PORT:设置为8000,告知Azure你的应用监听的端口WEBSITE_WEB_SOCKET_PORT:设置为8000,指定WebSocket使用的端口需与应用监听端口一致
3. 确保WebSocket配置生效
执行启用WebSocket的命令后,必须重启Web App才能让配置生效。另外,可在门户的Web App→配置→常规设置中检查“Web sockets”状态(Linux环境下该选项可能需通过CLI配置,但重启后会同步状态)。
4. 升级Streamlit版本
旧版本Streamlit(如v1.10以下)存在与Azure Web App WebSocket兼容的问题,在requirements.txt中指定Streamlit版本为1.20+,重新部署应用。
5. 排查日志定位问题
在Azure门户的Web App→日志流中查看应用启动日志和运行时日志,确认是否存在WebSocket连接失败的具体报错,或是Streamlit启动时的其他异常信息。
内容的提问来源于stack exchange,提问作者BeGreen

