@Lepilov

Отслеживание исключений в asyncio?

Заинтересовал вопрос, какое исключение генериться весли одна из корутин в очереди зафейлится.
task_list = [task1(), task2(), task3()]
res = asyncio.gather(*task_list, return_exceptions=True)

Исходя из документации
If return_exceptions is True, exceptions are treated the same as successful results, and aggregated in the result list.

Т.е если к примеру task2 вернет ошибку , то результат будет
res = [task1_result, task2_error, task3_result]
Какой именно тип исключения формируется в task2_error? Как сделать что то вроде если ходь одна корутина в ошибке то вернуть какое то дефолтное значение например или лог записать и т.п.
  • Вопрос задан
  • 50 просмотров
Пригласить эксперта
Ответы на вопрос 2
@dmtrrr
Backend developer
> Какой именно тип исключения формируется

какой exception возникает в коде корутины такой и будет
Ответ написан
@Lepilov Автор вопроса
Возможно кому то пригодиться решение
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]
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы