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Сообщить о неточности