Python 3.x 无法在Gunicorn上部署dash应用程序

Python 3.x 无法在Gunicorn上部署dash应用程序,python-3.x,gunicorn,plotly-dash,Python 3.x,Gunicorn,Plotly Dash,我想在Gunicorn上部署dash应用程序。但我不能这样做。执行gunicorn: 版本: 古尼科恩(20.0.4) 破折号(1.17.0) 仪表板核心部件(1.13.0) 破折号html组件(1.1.1) 仪表板渲染器(1.8.3) 仪表台(4.11.0) 我的dash应用程序,文件名:analyzer.py import dash_core_components as dcc import dash_html_components as html from dash.dependenc

我想在Gunicorn上部署dash应用程序。但我不能这样做。执行
gunicorn:

版本:

  • 古尼科恩(20.0.4)
  • 破折号(1.17.0)
  • 仪表板核心部件(1.13.0)
  • 破折号html组件(1.1.1)
  • 仪表板渲染器(1.8.3)
  • 仪表台(4.11.0)
我的dash应用程序,文件名:
analyzer.py

import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
import pandas as pd
import flask

<data_frame definitions>


app = dash.Dash()
server = app.server

<app.layout>

<Call backs>

## at the end

if __name__ == '__main__':
    app.run_server()
我看到端口正在侦听,但是,我无法在服务器的公共IP和0.0.0.0上打开仪表板 端口8000处于侦听模式

sudo lsof -i -P -n | grep LISTEN

gunicorn  13003     user1    5u  IPv4 49878669      0t0  TCP *:8000 (LISTEN)
gunicorn  13015     user1    5u  IPv4 49878669      0t0  TCP *:8000 (LISTEN)

您能告诉我哪里出了问题吗?

当服务器被告知要侦听
0.0.0
,这意味着“侦听所有绑定的IP地址”。浏览器可以使用绑定到该服务器的任何IP地址来访问它。
127
系列地址是保证绑定到每台机器的一组地址之一

这意味着您应该能够浏览到
https://127.0.0.0:8000
查看网络应用程序。另外,
https://127.0.0.1:8000
https://127.0.1.0:8000
https://127.666.312.432:8000


但是,要求web浏览器访问
https://0.0.0.0
表示“我不知道要连接到哪里”,并且总是失败。包括所有端口,因此尝试浏览到
https://0.0.0.0:8000
将始终失败。

当服务器被告知侦听
0.0.0.0
时,这意味着“侦听所有绑定的IP地址”。浏览器可以使用绑定到该服务器的任何IP地址来访问它。
127
系列地址是保证绑定到每台机器的一组地址之一

这意味着您应该能够浏览到
https://127.0.0.0:8000
查看网络应用程序。另外,
https://127.0.0.1:8000
https://127.0.1.0:8000
https://127.666.312.432:8000


但是,要求web浏览器访问
https://0.0.0.0
表示“我不知道要连接到哪里”,并且总是失败。包括所有端口,因此尝试浏览到
https://0.0.0.0:8000
将始终失败。

因为我在终端上没有遇到任何错误消息,所以我尝试了
wget
并找到了
200 OK
响应。这表明我无法通过浏览器获取仪表板。 因此,我将端口添加到
firewalld
并重新启动
firewalld
。可以通过浏览器访问仪表板

[user1@myHost]$ gunicorn analyzer:server -b:8000

[2021-04-16 16:57:58 +0200] [8334] [INFO] Starting gunicorn 20.0.4
[2021-04-16 16:57:58 +0200] [8334] [INFO] Listening at: http://0.0.0.0:8000 (8334)
[2021-04-16 16:57:58 +0200] [8334] [INFO] Using worker: sync
[2021-04-16 16:57:58 +0200] [8345] [INFO] Booting worker with pid: 8345

感谢大家抽出时间。

因为我在终端上没有遇到任何错误消息,所以我尝试了
wget
并找到了
200 OK
响应。这表明我无法通过浏览器获取仪表板。 因此,我将端口添加到
firewalld
并重新启动
firewalld
。可以通过浏览器访问仪表板

[user1@myHost]$ gunicorn analyzer:server -b:8000

[2021-04-16 16:57:58 +0200] [8334] [INFO] Starting gunicorn 20.0.4
[2021-04-16 16:57:58 +0200] [8334] [INFO] Listening at: http://0.0.0.0:8000 (8334)
[2021-04-16 16:57:58 +0200] [8334] [INFO] Using worker: sync
[2021-04-16 16:57:58 +0200] [8345] [INFO] Booting worker with pid: 8345


感谢大家抽出时间。

您是否尝试过将IP从0.0.0.0更改为127.0.0.1?是的,我在这里发布之前已经尝试过了。它不起作用。嗯,你能访问FastAPI部署的swagger文档吗?你能发布你的代码的其余部分吗?我想,代码的主要部分涉及部署,涉及应用程序代码中“服务器”的定义。代码的其余部分基本上是散布图和app.callback后面的功能逻辑。虽然它在本地运行良好,但当我在Linux上使用gunicorn进行部署时,即使在定义server=app.server并将其作为
gunicorn analyzer:server在gunicorn命令行中传递后,它也不起作用。您是否尝试过将IP从0.0.0.0更改为127.0.0.0.1?是的,我在这里发布之前已经尝试过了。它不起作用。嗯,你能访问FastAPI部署的swagger文档吗?你能发布你的代码的其余部分吗?我想,代码的主要部分涉及部署,涉及应用程序代码中“服务器”的定义。代码的其余部分基本上是散布图和app.callback后面的功能逻辑。尽管它在本地运行良好,但当我在Linux上使用gunicorn进行部署时,即使在定义server=app.server并将其作为
gunicorn analyzer:server
在gunicorn命令行中传递后,它也不起作用。我也这么想,但并不完全确定。很好的完整答案。嘿,如果你喜欢这个答案,请在评论之前告诉我;-)谢谢你,迈克。我尝试了127.0.0.1,甚至尝试了服务器的公共IP地址。但它没有起作用。似乎什么都不管用。然后我把我的问题贴在这里。你能进一步指导我吗。!!嘿,迈克,我将端口添加到
firewalld
并重新启动了服务。成功了。谢谢你的时间。我也这么想,但不完全确定。很好的完整答案。嘿,如果你喜欢这个答案,请在评论之前告诉我;-)谢谢你,迈克。我尝试了127.0.0.1,甚至尝试了服务器的公共IP地址。但它没有起作用。似乎什么都不管用。然后我把我的问题贴在这里。你能进一步指导我吗。!!嘿,迈克,我将端口添加到
firewalld
并重新启动了服务。成功了。谢谢你抽出时间。