【发布时间】:2021-12-01 09:49:07
【问题描述】:
我正在使用 python Dash 创建一个多页应用程序。作为这方面的新手,我想知道我是否可以确定一旦加载的数据将保持在内存中?
我的意思是当我有 index.py 文件作为页面选择器时:
@app.callback(Output(component_id='page-content', component_property='children'),
Input(component_id='url', component_property='pathname'))
def display_page(new_path):
if new_path.startswith('/apps/Data'):
return html.P(data.serve_layout())
elif new_path == '/apps/Projects':
return html.P(projects.serve_layout())
else:
return html.P(landing.serve_layout())
现在页面 /apps/Data (data.py) 有一些输入和按钮,允许用户获取必要的数据。数据存储在全局 Python 变量中(即 Python 类 MyData 的一个实例),如下所示:
data_store = MyData()
@app.callback(
Output('load_data','name'),
Input('load_data', 'n_clicks'),
prevent_initial_call=True)
def load_data (n_clicks):
data_store.load_data()
raise dash.exceptions.PreventUpdate
稍后在 /apps/Projects (projects.py) 页面中访问和使用这些数据,如下所示:
from apps.data import data_store
@app.callback(
Output('show_data','name'),
Input('show_data', 'n_clicks'),
prevent_initial_call=True)
def show_data (n_clicks):
print (data_store.test_show_data())
raise dash.exceptions.PreventUpdate
现在这个似乎可以工作了,但我真的可以相信 data_store 中的数据是持久的吗?问题是我对 Dash 内存处理不是很了解,所以也可能是当一些垃圾收集器启动时 data_store 突然被删除。或者它可能安全地在同一个应用程序上下文中?
【问题讨论】:
标签: python persistence plotly-dash