Выбор ответа Middle asyncio обновлено

Что делает gather при ошибке задачи

Вопрос

Одна из трёх корутин в asyncio.gather(a(), b(), c()) бросила исключение. Что произойдёт по умолчанию?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Исключение вылетит из gather, остальные задачи продолжат. С returnexceptions=False (по умолчанию) gather бросает первое исключение, но остальные задачи продолжают работать в фоне, их результаты теряются, а ошибки могут остаться незамеченными.

Варианты ответа

  1. Все остальные задачи будут немедленно отменены
  2. Исключение вылетит из gather, остальные задачи продолжатправильный ответ
  3. gather вернёт список, где на месте упавшей задачи None
  4. Исключение будет проигнорировано, результат без него

Разбор

С return_exceptions=False (по умолчанию) gather бросает первое исключение, но остальные задачи продолжают работать в фоне, их результаты теряются, а ошибки могут остаться незамеченными. С return_exceptions=True исключения вернутся в списке результатов. Автоматическая отмена соседей это поведение TaskGroup.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.