强制异步函数在下一个任务之前完成



我使用的是带有async函数的python API包装器。我需要多次调用API,并希望通过等待每个任务完成,然后再进入下一个迭代来覆盖async功能。

import asyncio
loop = asyncio.get_event_loop()
for count in range(5):
loop.create_task(main(count)) # Need this line to complete before next iteration
time.sleep(60) # Hacky solution

目前我只是在睡觉,直到我可以假设main()已经完成。如何确保main((永远不会与自身同时运行?

要等待任务完成,请使用await。这需要一个异步函数,您可以使用asyncio.run:运行该函数

async def x():
for count in range(5):
await main(count)
asyncio.run(x())

如果您想从顶级代码中执行同样的操作,只需根据需要多次调用run_until_complete即可:

loop = asyncio.get_event_loop()
for count in range(5):
loop.run_until_complete(main(count))

相关内容

最新更新