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 dashimport dash_core_components 的同一个 Flask 应用程序也可以正常工作。我一输入 import dash_html_components,就收到服务器错误。所有 dash 包都已通过 pip 正确安装,所以我不知道为什么仅导入 html 组件会导致服务器错误。

我通过硬重置 Ubuntu 18.04 服务器解决了我的问题,再次执行所有步骤,安装 python3.6、pip3.6、apache2、wsgi 和破折号包。这一次,dash 应用程序不会引发服务器错误。