flask - 从破折号调用异步函数
问题描述
function
一旦需要编辑一个单一的await
,它似乎需要被编辑的级联functions
,直到你达到添加中断内容await
的地步: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
是一个function
调用asynchronous
代码
df = amp.get_data_job(symbolStr)
我无法将回调update_interval
变成asynchronous
function
(AFAIK)。推荐的方法是什么。我的意思是,仍然保持dash
。
解决方案
使用 FastApi 并在旁边提供破折号时遇到了同样的情况。使用 asyncio.run()
import asyncio
async def asyn_fun(foo):
return True if foo == "bar" else False
def sync_fun(foo):
return asyncio.run(asyn_fun(foo))
print(sync_fun("bar"))
推荐阅读
- java - 在 Spring MVC 5 中使用 MultipartFile 总是返回 null
- r - 在一列和两个较短的列中匹配来自库的单词,然后将这两个数据框合并到 r
- node.js - 使用 MongoDB 查询数组字段以查找匹配多个值的子字符串的文档
- r - 从r中的多个列表制作二进制(存在/不存在)数据矩阵
- arduino - 缩放图形处理2.2.1
- javascript - 关闭腻子窗口时机器人关闭
- google-app-engine - Ktor App 部署到 AppEngine 时未调用 Main 方法
- c++ - 从 CSV 数据文件中读取,尝试仅提取我需要的内容时出错
- oracle - 将一个用户的表导入其他用户的表
- ios - AppIcon 无法在 IOS 上使用 xamarin / Visual Studio Mac 显示,但可以使用 xcode