我正在使用带有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
目前我只是在 sleep ,直到我可以假设 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))
关于python - 强制异步函数在下一个任务之前完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65148790/