Python 异步IO聚集中的捕获异常

Python 异步IO聚集中的捕获异常,python,asynchronous,exception,async-await,Python,Asynchronous,Exception,Async Await,假设我们向事件循环发送了多个协程 task_list = [task1(), task2(), task3()] res = asyncio.gather(*task_list, return_exceptions=True) 关于文件 如果return_exceptions为True,则将异常视为 成功的结果,并在结果列表中聚合 例如,如果task2返回错误,结果将为 res = [task1_result, task2_error, task3_result] 结果将在另一个进程中进一步

假设我们向事件循环发送了多个协程

task_list = [task1(), task2(), task3()]
res = asyncio.gather(*task_list, return_exceptions=True)
关于文件

如果return_exceptions为True,则将异常视为 成功的结果,并在结果列表中聚合

例如,如果task2返回错误,结果将为

res = [task1_result, task2_error, task3_result]
结果将在另一个进程中进一步处理,如果响应中有错误,我希望传递一些默认值。问题是如何检查event_循环响应中的异常。Smth类(警告伪代码!)


您可以使用
map
函数将结果列表中的错误替换为默认值。用于检查结果是否为错误
isinstance(结果,异常)
可以使用。像这样:

task_list = [task1(), task2()]
res = await asyncio.gather(*task_list, return_exceptions=True)  # res = ["result", ArithmeticError()]
res = list(map(lambda r: r if not isinstance(r, Exception) else default_value, res))  # res = ["result", None]
task_list = [task1(), task2()]
res = await asyncio.gather(*task_list, return_exceptions=True)  # res = ["result", ArithmeticError()]
res = list(map(lambda r: r if not isinstance(r, Exception) else default_value, res))  # res = ["result", None]