我正在使用第三方模块从 API 检索数据。我只是想异步等待模块返回偶尔需要几秒钟并冻结我的应用程序的数据。但是,当我尝试等待对该模块的调用时,我收到了 TypeError:
TypeError: object dict can't be used in 'await' expression
import thirdPartyAPIwrapper
async def getData():
retrienveData = await thirdPartyAPIWrapper.data()
return await retrieveData
def main():
loop = asncio.get_event_loop()
data = loop.run_until_complete(getData())
loop.close
return data
为什么我不能等待类型(’dict’)?有没有解决的办法?如果带有 asyncio 的 async/await 不能与不返回协程的第三方模块一起使用,那么我的其他选择是什么?
原文由 Riley Hughes 发布,翻译遵循 CC BY-SA 4.0 许可协议
只能等待异步(定义为
async def
)函数。整个想法是,这些函数是以特殊方式编写的,可以在不阻塞事件循环的情况下运行(await
)。如果您想从需要相当长的时间执行的常见(定义为
def
)函数中获取结果,您可以选择以下选项:通常你想选择第二个选项。
以下是如何操作的示例:
请阅读 这个关于 asyncio 如何工作的答案。我想这会对你有很大帮助。