Python Dash Web应用引发内部服务器错误

时间:2018-07-26 20:46:16

标签: python plotly-dash

尝试在Ubuntu 18.04服务器上部署Dash应用程序。任何破折号应用程序都会引发内部服务器错误。任何简单的烧瓶应用程序都不会。我设法通过在Flask应用程序脚本中导入dash-core组件或dash-html-components来缩小问题的范围,而没有实际使用它们。这会导致问题。显然,导入这些程序包足以引发服务器错误。

所有破折号软件包已通过pip正确安装。我正在使用apache2和mod_wsgi来发布应用程序。

修改: 上面的错误测试是错误的,因为dash-core-components应该写为dash_core_components。

Edit2 : 我正在撤消第一次编辑。我最终可以得出结论,在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导致了错误。有什么解释吗?

2 个答案:

答案 0 :(得分:0)

我还没有尝试在Ubuntu 18.04服务器上部署破折号应用程序,但是我已经使用独立的WSGI服务器(gunicorn)成功地在heroku上进行了部署。至于您的服务器错误,我不太确定它可能来自哪里(也许是python运行时版本?)。 您应该尝试的一件事是使用flask创建服务器,然后在创建破折号应用程序时指定服务器:

import flask
import dash

server = flask.Flask(__name__)
app = dash.Dash(__name__, server=server)

如果您拼命尝试部署应用程序,则可以暂时使用heroku,它们提供了一种非常简单的方法来部署Flask应用程序。请注意,请确保您使用的是python2运行时版本,而不是python3!

为方便起见,这是有关部署破折号应用程序的详尽文档。有一个简单的heroku部署示例https://dash.plot.ly/deployment

答案 1 :(得分:0)

好的。在我的测试中,Flask应用程序运行良好。随机抛出 import dash import dash_core_components 的同一Flask应用程序也可以正常工作。一旦我导入dash_html_components ,我就收到了服务器错误。所有破折号软件包均已通过pip正确安装,因此我不知道为什么仅导入html组件会导致服务器错误。

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