Я экспериментирую с asyncio Python для одновременного запуска нескольких сопрограмм.
Однако в некоторых случаях asyncio.gather() кажется зависающим навсегда, когда одна из задач вызывает исключение — хотя я ожидаю, что она распространит и отменит другие.
Ожидаемое поведение:
Как только Task_b вызовет исключение, я ожидаю, что Task_a будет отменен, asyncio.gather() остановить и распространить исключение.
Фактическое поведение:
Иногда это работает так, как ожидалось, но в других случаях (особенно когда задачи имеют операции ввода-вывода или сетевые вызовы) программа зависает на неопределенный срок, и отмена, похоже, не завершается.
Подробнее здесь: https://stackoverflow.com/questions/798 ... tasks-rais
Мобильная версия