Русский
Открыть в Telegram

ВеткаНе могу понять почему в коде на белом скрине мне приходится явно оборачивать ожидание окончания таски в блок try except?…

4 сообщения · –
V
Фотография
нажмите — покажем
Фотография
нажмите — покажем
Не могу понять почему в коде на белом скрине мне приходится явно оборачивать ожидание окончания таски в блок try except? Если этого не делать, то ошибка CancelledError На черном скрине похожий пример, но без блока try except и там все ОК
  1. V
    Дело не в TaskGroup, а в том, вызываешь ли ты await task после task.cancel(). На черном скрине... Что происходит: 1. Создаётся задача background(). 2. Через 5 секунд вызывается task.cancel(). 3. Выполняется return 42. 4. Python начинает выходить из async with TaskGroup. 5. TaskGroup дожидается завершения задачи. 6. Задача завершается с CancelledError. 7. TaskGroup считает отмену дочерней задачи нормальным завершением и не пробрасывает CancelledError наружу. На белом скрине всё иначе.... речь про эти строки task.cancel() await task task.cancel() запрашивает отмену задачи. При следующем подходящем моменте выполнения в отменяемую корутину будет выброшено исключение asyncio.CancelledError. так и вот главное... Если ты явно делаешь await task для отменённой задачи, CancelledError будет выброшен уже в твоей текущей корутине.
    ❤2
ССообщество Python ПрограммистовСообщество Python Программистов@python_scripts · группа · Технологии
4 169участников43пишущих за 30 дней
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем