nginx Streamlit应用程序停止并显示“请稍候...“,然后停止

ekqde3dh  于 2022-11-21  发布在  Nginx
关注(0)|答案(5)|浏览(618)

问题

通过运行streamlit run main.py启动的应用程序将正确显示http://IP_ADDRESS:8501,但http://DOMAIN_NAME会停止并显示“请稍候...“。

环境

  • 域名已用Route 53解析
  • 在EC2(Amazon Linux)上部署Streamlit应用程序并在Tmux上运行Streamlit run main.py
  • 使用Nginx将对端口80的访问转换为端口8501

已更改Nginx设置

/etc/nginx/nginx.conf文件中指定的文件类型

server {
        listen       80; #default
        listen       [::]:80; #default
        server_name MY_DOMAIN_NAME;
        location / {
          proxy_pass http://MY_IP_ADDRESS:8501;
        }
        root         /usr/share/nginx/html; #default

我所尝试的

我尝试了以下方法,但没有解决问题。
https://docs.streamlit.io/knowledge-base/deploy/remote-start#symptom-2-the-app-says-please-wait-forever

  • streamlit run my_app.py --server.enableCORS=false
  • streamlit run my_app.py --server.enableWebsocketCompression=false
vxf3dgd4

vxf3dgd41#

如果有人使用Ambassador作为他们的kubernetes入口,你需要允许websockets。
但是,您实际上需要将以下内容添加到Map中

allow_upgrade:
- websocket
sdnqo3pr

sdnqo3pr2#

尝试以下配置:

server {
    listen 80 default_server;
    server_name MY_DOMAIN_NAME;

    location / {
        proxy_pass http://127.0.0.1:8501/;
            proxy_http_version 1.1;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $host;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_read_timeout 86400;
    }

然后使用以下命令行:

streamlit run my_app.py --server.port 8501 --server.baseUrlPath / --server.enableCORS false --server.enableXsrfProtection false
jmo0nnb3

jmo0nnb33#

--server.headless=true

我认为唯一的问题是Streamlit试图打开浏览器,因此只需在run命令中添加以下参数:

  • streamlit run my_app.py --server.headless=true

或者尝试在需要创建的配置文件中更改此设置:
请参阅this说明。
最好的。

mbyulnm0

mbyulnm05#

在我的例子中,修复是将streamlitv1.14.0降级为v1.11.0
什么没起作用:

  1. --server.headless=true
  2. --server.enableCORS=false
  3. --server.enableWebsocketCompression=false
    如何部署应用程序?GCS使用Cloud Run

相关问题