如何将烧瓶路由中的数据共享到Dash回调

2022-04-19 00:00:00 python flask plotly-dash session request

问题描述

我编写了一个烧瓶路由(假设为‘/POST_DATA’),以通过POST请求从远程传感器接收数据。

我想用Dash和一些下拉列表显示该数据,以响应地自定义图形,并在新数据到达烧瓶路线时自动更新。

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回调共享来自烧瓶路由的数据?

我是否应该将数据集存储在烧瓶会话中?然后可以在DASH回调中从会话中获取数据集吗?如何?


解决方案

我脑海中出现的唯一方法是:

  1. 将所有数据写入一个文件,然后从回调访问该文件。
  2. 将所有数据保存到数据库中,然后从回调访问数据库。
  3. 也许您可以将数据作为url参数传递。在回调中,您可能可以访问烧瓶会话。这只是一个猜测。
另一种解决方案可能是在同一仪表板上插入数据...Upload Component

相关文章