简体中文
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 ——“公开 Telegram 的 Google”;随着该社群被抓取而更新。 时间为 UTC。

仅限公开内容,使用 Telegram 官方 API。 关于 · 常见问题 · 索引限制 · 移除页面 · 目录 · 搜索 · 计算方法