Выбор ответа Middle asyncio обновлено
Что делает gather при ошибке задачи
Вопрос
Одна из трёх корутин в asyncio.gather(a(), b(), c()) бросила исключение. Что произойдёт по умолчанию?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Исключение вылетит из gather, остальные задачи продолжат. С returnexceptions=False (по умолчанию) gather бросает первое исключение, но остальные задачи продолжают работать в фоне, их результаты теряются, а ошибки могут остаться незамеченными.
Варианты ответа
- Все остальные задачи будут немедленно отменены
- Исключение вылетит из
gather, остальные задачи продолжатправильный ответ gatherвернёт список, где на месте упавшей задачиNone- Исключение будет проигнорировано, результат без него
Разбор
С return_exceptions=False (по умолчанию) gather бросает первое исключение, но остальные задачи продолжают работать в фоне, их результаты теряются, а ошибки могут остаться незамеченными. С return_exceptions=True исключения вернутся в списке результатов. Автоматическая отмена соседей это поведение TaskGroup.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.