我有一个中等大小的烧瓶应用程序,我想将其转换为asyncio
。当前,我的问题是我在调用堆栈中有一些网络调用10-12函数,但是我将用一个简单的示例来总结我的问题:
import asyncio
async def blocking_task():
await asyncio.sleep(1)
def sync_method():
await blocking_task() # Error here. This is not async method, but it is called by async method in the event loop
async def async_enrty():
sync_method()
def main():
loop = asyncio.get_event_loop()
loop.run_until_complete(async_enrty())
loop.close()
main()
假设我有一个阻止任务-blocking_task()
,我想等待它。由于调用堆栈很大,因此我必须使每个函数异步,并等待它调用的每个函数,直到到达我的blocking_function
。由于我在事件循环中调用了此函数,因此有什么方法可以在不使用async / await一直到阻塞函数的情况下等待它吗?