使用 asyncio.gather 代替 asyncio.wait,并加入参数 return_exceptions=True,即可在第一个异常时立即返回所有结果。
示例代码:
import asyncio
async def foo(): raise Exception('foo error')
async def bar(): await asyncio.sleep(1) raise Exception('bar error')
async def main(): tasks = [foo(), bar()] try: results = await asyncio.gather(*tasks, return_exceptions=True) except Exception as e: print(f'Caught an exception: {e}') return
print(results)
if name == 'main': asyncio.run(main())