【问题标题】:How to share data from a Flask route to a Dash callback [duplicate]如何将 Flask 路由中的数据共享到 Dash 回调 [重复]
【发布时间】:2021-09-10 15:01:59
【问题描述】:

我编写了一个 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 会话中吗?那么是否可以在破折号回调中从会话中获取数据集?怎么样?

【问题讨论】:

  • “重复”问题不是重复的:我不想在 Flask 路由之间共享数据,而是在 Flask 路由和 Dash 回调之间共享数据,它们不一样(至少不明显和如果是这样,应提供链接到“重复”问题的解释性答案)。
  • 关于这个问题的一些有用信息可以在这里找到community.plotly.com/t/update-plot-in-dash-from-rest-api/10612

标签: python flask session request plotly-dash


【解决方案1】:

我想到的唯一方法是:

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

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

【讨论】:

  • 我试图从破折号回调访问烧瓶会话,但我得到“运行时错误:在请求上下文之外工作。这通常意味着您尝试使用需要活动 HTTP 请求的功能。”跨度>
  • 我不明白你最后的建议:“在同一个仪表板上插入数据”是什么意思?谢谢
猜你喜欢
  • 1970-01-01
  • 2022-12-12
  • 1970-01-01
  • 2017-03-28
  • 1970-01-01
  • 2022-01-12
  • 1970-01-01
  • 2020-04-18
  • 2021-04-03
相关资源
最近更新 更多