首页 > 解决方案 > 如何将 Flask 路由中的数据共享到 Dash 回调

问题描述

我编写了一个 Flask 路由(比如说'/post_data'),通过 POST 请求从远程传感器接收数据。

我想用Dash显示该数据,并带有一些下拉菜单以响应地自定义图形,并在新数据到达 Flask 路由时自动更新。

import dash
import flask


app = dash.Dash(__name__)
app.layout = [
   # ... some  dash_core_components ...
   dcc.Graph(id='mygraph'),
]
server = app.server

@server.route('/post_data', methods=['GET', 'POST'])
def post_data():
    if request.method == 'POST':
        data = eval(request.data.decode('utf8'))


@app.callback(
    [Output('mygraph', 'figure')],
    [Input('mydropdown1', 'value'), ...],
)
def update_mygraph(mydropdown1_value, ...):
    # QUESTION: how to get data from post_data?
    # some elaboration on data based on dropdown values
    fig = px.scatter(data, x="x", y="y")
    return fig


if __name__ == '__main__':
    app.run_server()

我不明白的是:如何与 Dash 回调共享来自 Flask 路由的数据?

我应该将数据集存储在 Flask 会话中吗?那么是否可以在破折号回调中从会话中获取数据集?如何?

标签: pythonflasksessionrequestplotly-dash

解决方案


我想到的唯一方法是:

  1. 将所有数据写入文件,然后从回调中访问该文件。
  2. 将所有数据保存到数据库中,然后从回调中访问数据库。
  3. 也许您可以将数据作为 url 参数传递。在回调中,您可能可以访问烧瓶会话。这只是一个猜想。

另一种解决方案可能只是在同一个仪表板上插入数据......上传组件


推荐阅读