Python Dash 网络应用引发内部服务器错误
Python Dash web-app raises Internal Server Error
正在尝试在 Ubuntu 18.04 服务器上部署 Dash 应用程序。任何 dash 应用程序都会引发内部服务器错误。任何简单的烧瓶应用程序都没有。我通过在 Flask 应用程序脚本中导入 dash-core 组件或 dash-html-components 而没有实际使用它们来设法缩小问题范围。这导致了问题。显然导入这些包足以引发服务器错误。
所有 dash 包都已使用 pip 正确安装。我正在使用 apache2 和 mod_wsgi 来发布应用程序。
编辑:
上面的错误测试是错误的,因为 dash-core-components 应该写成 dash_core_components。
编辑2:
我正在收回第一个编辑。我最终可以得出结论,在 Flask 应用程序中导入 dash_html_components(仅用于测试)会引发服务器错误。
这个有效:
from flask import Flask
import sys
app = Flask(__name__)
@app.route('/')
def homepage():
return "Hello"
if __name__ == "__main__":
app.run()
这会引发内部服务器错误:
import dash
import dash_core_components as dcc
import dash_html_components as html
app = dash.Dash()
app.layout = html.Div(children=['hello'])
server = app.server
if __name__ == '__main__':
app.run_server(debug=True)
根据上面的解释,我断定是dash_html_components导致了错误。对此有什么解释吗?
我没有尝试在 Ubuntu 18.04 服务器上部署 dash 应用程序,但我已经使用独立的 WSGI 服务器 (gunicorn) 成功部署在 heroku 上。至于你的服务器错误,我不太确定它可能来自哪里(也许 python 运行时版本?)。
你应该尝试的一件事是使用 flask 创建服务器,然后在创建 dash 应用程序时指定服务器:
import flask
import dash
server = flask.Flask(__name__)
app = dash.Dash(__name__, server=server)
如果你拼命尝试部署你的应用程序,你可以暂时使用 heroku,它们提供了一种非常简单的方法来部署 flask 应用程序。一个警告,确保您使用的是 python2 运行时版本而不是 python3!
为了您的方便,这里是关于部署 dash 应用程序的 plotly 文档。有一个简单的 heroku 部署示例 https://dash.plot.ly/deployment
好的。在我的测试中,Flask 应用程序运行良好。带有 import dash 或 import dash_core_components 的同一个 Flask 应用程序也可以正常工作。我一输入 import dash_html_components,就收到服务器错误。所有 dash 包都已通过 pip 正确安装,所以我不知道为什么仅导入 html 组件会导致服务器错误。
我通过硬重置 Ubuntu 18.04 服务器解决了我的问题,再次执行所有步骤,安装 python3.6、pip3.6、apache2、wsgi 和破折号包。这一次,dash 应用程序不会引发服务器错误。
正在尝试在 Ubuntu 18.04 服务器上部署 Dash 应用程序。任何 dash 应用程序都会引发内部服务器错误。任何简单的烧瓶应用程序都没有。我通过在 Flask 应用程序脚本中导入 dash-core 组件或 dash-html-components 而没有实际使用它们来设法缩小问题范围。这导致了问题。显然导入这些包足以引发服务器错误。
所有 dash 包都已使用 pip 正确安装。我正在使用 apache2 和 mod_wsgi 来发布应用程序。
编辑: 上面的错误测试是错误的,因为 dash-core-components 应该写成 dash_core_components。
编辑2: 我正在收回第一个编辑。我最终可以得出结论,在 Flask 应用程序中导入 dash_html_components(仅用于测试)会引发服务器错误。
这个有效:
from flask import Flask
import sys
app = Flask(__name__)
@app.route('/')
def homepage():
return "Hello"
if __name__ == "__main__":
app.run()
这会引发内部服务器错误:
import dash
import dash_core_components as dcc
import dash_html_components as html
app = dash.Dash()
app.layout = html.Div(children=['hello'])
server = app.server
if __name__ == '__main__':
app.run_server(debug=True)
根据上面的解释,我断定是dash_html_components导致了错误。对此有什么解释吗?
我没有尝试在 Ubuntu 18.04 服务器上部署 dash 应用程序,但我已经使用独立的 WSGI 服务器 (gunicorn) 成功部署在 heroku 上。至于你的服务器错误,我不太确定它可能来自哪里(也许 python 运行时版本?)。 你应该尝试的一件事是使用 flask 创建服务器,然后在创建 dash 应用程序时指定服务器:
import flask
import dash
server = flask.Flask(__name__)
app = dash.Dash(__name__, server=server)
如果你拼命尝试部署你的应用程序,你可以暂时使用 heroku,它们提供了一种非常简单的方法来部署 flask 应用程序。一个警告,确保您使用的是 python2 运行时版本而不是 python3!
为了您的方便,这里是关于部署 dash 应用程序的 plotly 文档。有一个简单的 heroku 部署示例 https://dash.plot.ly/deployment
好的。在我的测试中,Flask 应用程序运行良好。带有 import dash 或 import dash_core_components 的同一个 Flask 应用程序也可以正常工作。我一输入 import dash_html_components,就收到服务器错误。所有 dash 包都已通过 pip 正确安装,所以我不知道为什么仅导入 html 组件会导致服务器错误。
我通过硬重置 Ubuntu 18.04 服务器解决了我的问题,再次执行所有步骤,安装 python3.6、pip3.6、apache2、wsgi 和破折号包。这一次,dash 应用程序不会引发服务器错误。