【发布时间】:2020-03-18 23:59:04
【问题描述】:
我想根据时间间隔更新我的 Dash 数据表。它会运行,但没有任何更新。我不认为这应该很难,但我显然错过了一些东西。这是我所拥有的:
import dash
from dash.dependencies import Input, Output
import dash_core_components as dcc
import dash_html_components as html
import dash_table
import time
import pandas as pd
数据组件
def getData():
"""
Only can hit api every 6 seconds for 14 total items,
which is relevant towards the Dash interval
"""
df = pd.DataFrame()
for item in list:
data = *hit api*
df = df.append(data)
time.sleep(7)
return df
破折号组件
app = dash.Dash(__name__)
# passing in just column names to avoid needlessly hitting API
tblcols=[{'name': 'col1', 'id': 'col1'},
{'name': 'col2', 'id': 'col2'},
{'name': 'col3', 'id': 'col3'}
]
app.layout = html.Div([
html.H4('Dashboard Name'),
dcc.Interval('graph-update',interval = 500000, n_intervals = 0),
dash_table.DataTable(
id = 'table',
data = [{}],
columns=tblcols )])
@app.callback(
Output('table','data'),
[Input('graph-update', 'n_intervals')]
)
def updateTable(n):
"""
calling the get data function
"""
updated_data = getData()
return updated_data.to_dict('records')
if __name__ == '__main__':
app.run_server(debug=False)
再次,这将运行并返回我传递的列标题,但是当我看到更新已在控制台“POST /_dash-update-component HTTP/1.1”中运行时,没有任何变化
【问题讨论】:
-
您有
for item in list:,但我看不到list的定义位置。通常也不建议使用这样的受保护名称。您的循环将sleep持续 7 秒,然后重新开始。你要等多久?您的循环将运行与list中的值一样多的次数,因此它可能会在返回值之前运行几分钟。
标签: python plotly python-3.7 plotly-dash