You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取Plotly Dash的dcc.Store中存储的数据并赋值给外部new_df

核心原理说明

dcc.Store 是Dash前端的存储组件,其存储的JSON数据仅在Dash服务运行、回调触发更新时才会被写入,你直接手动调用回调函数store_csv无法获取运行时的最新数据,要实现需求可以按以下两种场景选择方案:


方案1:单进程/同服务端进程内读取(最简方案)

直接在回调更新dcc.Store的同时,给外部变量赋值即可,单worker运行时完全可用:

import pandas as pd
from dash import Dash, dcc, Input, Output

app = Dash(__name__)
# 提前定义外部变量
new_df = pd.DataFrame()

@app.callback(
    Output('store-csv', 'data'),
    Input('csv-input', 'value'))
def store_csv(csv_input):
    # 声明使用全局外部变量
    global new_df
    df = pd.DataFrame(some_df)
    # 同步更新外部变量
    new_df = df.copy()
    return df.to_json(orient='split')

注意:如果是多worker/多进程部署Dash服务,全局变量会在多个进程中独立存储,不同请求可能拿到不一致的值,该场景下建议改用Redis等共享缓存存储df序列化结果,读写都走共享缓存即可。


方案2:独立进程跨环境读取

如果new_df在完全独立于Dash服务的Python进程中运行,你可以给Dash底层的Flask服务新增一个API接口,对外暴露dcc.Store的最新数据:

  1. Dash服务端新增路由代码:
from flask import jsonify

# 存储最新的store数据
latest_json = None

@app.callback(
    Output('store-csv', 'data'),
    Input('csv-input', 'value'))
def store_csv(csv_input):
    global latest_json
    df = pd.DataFrame(some_df)
    latest_json = df.to_json(orient='split')
    return latest_json

# 新增API接口对外暴露数据
@app.server.route('/get-df-json')
def get_df_json():
    return jsonify(latest_json)
  1. 外部进程请求接口获取数据转DataFrame:
import requests
import pandas as pd

# 替换为你的Dash服务访问地址
resp = requests.get("http://127.0.0.1:8050/get-df-json")
new_df = pd.read_json(resp.json(), orient="split")

内容的提问来源于stack exchange,提问作者bison72

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 21:54:04