【发布时间】:2021-08-30 14:30:07
【问题描述】:
一旦单个function 需要awaited,它似乎就像需要awaited 的functions 的级联,直到你达到添加await 破坏东西的地步:
我有 dash 代码间歇性地被调用:
def get_data(symbolStr):
print("Getting AR for", symbolStr)
df = amp.get_data_job(symbolStr) #calls async code and need to be awaited
return df
...
html.Div(
dcc.Interval(id='interval1', interval = 900 * 1000, n_intervals=0),
),
html.Div(
dash_table.DataTable(
id='table',
columns=[{"name": i, "id": i} for i in magic_columns],
editable=True,
row_deletable=True
),
)
@app.callback(
[dash.dependencies.Output('table', 'data')],
[dash.dependencies.Input('interval1', 'n_intervals')],
[dash.dependencies.State('table', 'data')]
)
def update_interval(n, data):
allSymbolsDf = pd.DataFrame()
for symbolStr in symbolsStr:
df = get_data(symbolStr)
allSymbolsDf = allSymbolsDf.append(df)
time.sleep(3)
return [allSymbolsDf.to_dict('rows')]
问题是,get_data 是一个调用 asynchronous 代码的 function
df = amp.get_data_job(symbolStr)
我无法将回调 update_interval 转换为 asynchronous function (AFAIK)。推荐的方法是什么。我的意思是,仍然保留dash。
【问题讨论】:
-
Dash 是 Flask,Flask 不是异步框架,为什么需要在像 Flask 这样的多线程 Web 服务器中使用异步函数?
标签: flask async-await python-asyncio plotly-dash