尝试在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导致了错误。有什么解释吗?
答案 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和破折号软件包来解决问题。这次,破折号应用程序不会引发服务器错误。