Українська
Відкрити в 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

Відкрита публічна стрічка з пошукового індексу ChatCrawler — «Google по публічному Telegram»; оновлюється в міру обходу майданчика. Час — UTC.

Лише публічний контент, офіційний API Telegram. Про проєкт · Питання · Межі індексу · Прибрати сторінку з видачі · Каталог · Пошук · Як ми рахуємо