- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想创建一个 Flask Web 应用程序。我想将多个 Dash 应用程序集成到此站点中,并在主页上显示每个 Dash 应用程序的链接。这是一个最小的例子:主页应如下所示:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def main():
return "Hello World"
if __name__ == "__main__":
app.run(debug = True)
假设我们有一个如下所示的 Dash 应用:
import dash
import dash_html_components as html
app = dash.Dash(__name__)
app.layout = html.Div("Hello world 1")
if __name__=="__main__":
app.run_server(debug=True)
我现在的问题是:如何通过以下方式将 Dash 应用程序集成到 Flask 应用程序中:1) Flask 应用程序中应该有一个指向 Dash 应用程序的链接 2) Dash 应用程序的位置应该是 /dash
(在这种情况下,主页位于 /
) 3) 如果有第二个和第三个 Dash 应用程序,则应该很容易添加另一个链接和位置(例如 /dash2
、/dash3
,...)
有很多帖子讨论这个问题 - 但是,我没有找到最小的例子。
最佳答案
将一个或多个 Dash 应用与现有 WSGI 应用相结合
以下示例通过将两个 Dash 应用程序与 Flask 应用程序相结合来说明此方法。
flask_app.py
from flask import Flask
flask_app = Flask(__name__)
@flask_app.route('/')
def index():
return 'Hello Flask app'
app1.py
import dash
import dash_html_components as html
app = dash.Dash(
__name__,
requests_pathname_prefix='/app1/'
)
app.layout = html.Div("Dash app 1")
app2.py
import dash
import dash_html_components as html
app = dash.Dash(
__name__,
requests_pathname_prefix='/app2/'
)
app.layout = html.Div("Dash app 2")
wsgi.py
from werkzeug.wsgi import DispatcherMiddleware
from app1 import app as app1
from app2 import app as app2
application = DispatcherMiddleware(flask_app, {
'/app1': app1.server,
'/app2': app2.server,
})
在此示例中,Flask 应用程序已安装在/处,两个 Dash 应用程序已安装在/app1 和/app2 处。在这种方法中,我们不会将 Flask 服务器传递给 Dash 应用程序,而是让它们创建自己的服务器,DispatcherMiddleware 根据传入请求的前缀将请求路由到该服务器。在每个 Dash 应用程序中,必须将 requests_pathname_prefix 指定为应用程序的挂载点,以匹配 DispatcherMiddleware 设置的路由前缀。
请注意,wsgi.py 中的应用程序对象的类型为 werkzeug.wsgi.DispatcherMiddleware,它没有 run 方法。这可以作为 WSGI 应用程序运行,如下所示:
$ gunicorn wsgi:application
或者,您可以使用 Werkzeug 开发服务器(不适合生产)来运行应用程序:
run.py
from werkzeug.wsgi import DispatcherMiddleware
from werkzeug.serving import run_simple
from app1 import app as app1
from app2 import app as app2
application = DispatcherMiddleware(flask_app, {
'/app1': app1.server,
'/app2': app2.server,
})
if __name__ == '__main__':
run_simple('localhost', 8050, application)
如果您在使用此方法时需要访问 Dash 开发工具(无论是使用 WSGI 服务器运行,还是使用 Werkzeug 开发服务器),您必须为每个 Dash 应用程序手动调用它们。可以在初始化 DispatcherMiddleware 之前添加以下几行来执行此操作:
app1.enable_dev_tools(debug=True)
app2.enable_dev_tools(debug=True)
注意:不应在生产中启用 Debug模式。当使用 Gunicorn 的 Debug模式时,需要 --reload 命令行标志才能使热重载工作。
在此示例中,与两个 Dash 应用程序组合的现有应用程序是 Flask 应用程序,但是这种方法可以组合任何实现 WSGI 规范的 Web 应用程序。可以在 WSGI 文档中找到包含一个或多个 Dash 应用程序的 WSGI Web 框架列表。
引用 - https://dash.plot.ly/integrating-dash
已编辑:
没有 WSGI 的多个 Dash 应用
from dash import Dash
from werkzeug.wsgi import DispatcherMiddleware
import flask
from werkzeug.serving import run_simple
import dash_html_components as html
server = flask.Flask(__name__)
dash_app1 = Dash(__name__, server = server, url_base_pathname='/dashboard/')
dash_app2 = Dash(__name__, server = server, url_base_pathname='/reports/')
dash_app1.layout = html.Div([html.H1('Hi there, I am Dash1')])
dash_app2.layout = html.Div([html.H1('Hi there, I am Dash2')])
@server.route('/')
@server.route('/hello')
def hello():
return 'hello world!'
@server.route('/dashboard/')
def render_dashboard():
return flask.redirect('/dash1')
@server.route('/reports/')
def render_reports():
return flask.redirect('/dash2')
app = DispatcherMiddleware(server, {
'/dash1': dash_app1.server,
'/dash2': dash_app2.server
})
run_simple('0.0.0.0', 8080, app, use_reloader=True, use_debugger=True)
关于python - 将 Dash 应用程序集成到 Flask : minimal example,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59627976/
我正在使用 Mechanize 配置 ssl , 根据 document我需要设置 agent.cert = 'example.cer' agent.key='example.cer' 但是我怎样才能
我有一个表格,允许人们将士兵添加到列表中,该列表可以很好地传输到 mysql。如果我在没有变量的情况下这样做甚至很好,但是一旦我尝试添加一个如下所示。 // Get Variable from Loc
使用 .htaccess 重写,我想要: http://example.com 重定向到:http://www.example.comhttps://www.example.com 重定向到:http
我想将所有流量重定向到 https://www.sitename.com 例子 http://sitename.com --> https://www.sitename.com http://www.
我只有 example.com 的 SSL 证书,并且想同时重定向 http://example.com和 http://*.example.com 到 https://example.com使用 n
我有服务器 A,它托管我们在 www.example.com 上的主要站点;我们有一个涵盖 *.example.com 的 SSL 证书。 在我们网站的安全部分,我们希望向我们编写并托管在单独机器/I
我正在努力平衡多行上的一些文本,并且我正在添加手动换行符以将文本均匀地分割在各行上。为了弄清楚这一点,我需要查看在哪里添加“\n”来测试我的代码,但我发现的唯一方法是将其全部打印为字符: ["T",
我在我们的域中安装了 Apache 和 Tomcat 服务器,因为我有超过 25 个服务,一些服务由 Apache 处理,一些服务由 Tomcat 处理。 tomcat 服务显示 http://exa
编辑:问题终于解决了。详细信息可以在此消息末尾的疑难解答部分中找到。 我在这里保留了详细的步骤,以防可能对某人有所帮助。 设置OpenLDAP I-创建服务器 该文档通常已经过时,并且您会找到多种实现
这个问题在这里已经有了答案: offsetting an html anchor to adjust for fixed header [duplicate] (28 个答案) 关闭 8 年前。
目前谷歌将我的网站链接显示为... example.com/ ...但是,我希望它显示为... example.com 我确实有以下元数据 ...下面是我的 htaccess 文件... Index
我使用 Microsoft Visual Studio 2012。当我将代码示例放入 C# 类/方法的 XML 注释中时,我想知道:引用我的程序集的用户将如何看到该代码示例? 我试图引用我自己的程序集
我对正则表达式还很陌生,无法真正弄清楚它是如何工作的。我试过这个: function change_email($email){ return preg_match('/^[\w]$/', $e
我正在使用 Hibernate 版本 4.3.5.Final。这里的问题是 Hibernate 找到 Foo 类型的实体,其中属性 address 的大小写不同(例如“BLAFOO”)。但是,在我的示
我为环境特定变量(如用户名和密码)设置了一个环境 YAML 文件。要在我的应用程序中使用这些变量,我需要使用 APP_CONFIG['username']而不是 APP_CONFIG[:usernam
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭10 年前。 Improve th
这个问题在这里已经有了答案: Does Python have a string 'contains' substring method? (10 个答案) 关闭 8 年前。 我想检查发件人 hea
我已经在 https://arieldemian.it 上配置了 SSL/TLS但似乎https://www.arieldemian.it不安全。这是为什么?我需要注册他们两个吗?我正在使用 http
当我使用 ProGuard 时,com.example.** 和 com.example.**{*;} 之间的区别是什么?例如,每种情况会发生什么情况? -keep class com.examp
我的主页的内容是根据使用 slug“home”对数据库的查询提取的。例如,如果我在地址栏中输入 example.com/home,它会根据看到的“/home”查询数据库并提取正确的内容(使用变量“$p
我是一名优秀的程序员,十分优秀!