Python Glossary English

Python 3.14+Асинхронное программированиефункция

asyncio.future_discard_from_awaited_by()

граф вызовов

Убирает из графа вызовов запись о том, что future ждёт задача waiter; парная функция к future_add_to_awaited_by().

Синтаксис

asyncio.future_discard_from_awaited_by(future, waiter, /)

Вызывают её в finally, чтобы связь снималась и при отмене или ошибке ожидающего, иначе отладочный вывод покажет задачу, которая уже ничего не ждёт. Удаление отсутствующей связи не ошибка, как у set.discard, а не set.remove. Для объектов не Future/Task функция ничего не делает. Появилась в 3.14.

Примеры

# Python 3.14+
import asyncio
async def main():
    fut = asyncio.get_running_loop().create_future()
    me = asyncio.current_task()
    asyncio.future_add_to_awaited_by(fut, me)
    try:
        pass  # здесь было бы ожидание в обход await
    finally:
        asyncio.future_discard_from_awaited_by(fut, me)
    print(asyncio.capture_call_graph(fut).awaited_by)  # → ()
    asyncio.future_discard_from_awaited_by(fut, me)  # повтор — не ошибка
    fut.cancel()
asyncio.run(main())

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности