Python Glossary English

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

asyncio.future_add_to_awaited_by()

граф вызовов

Вручную записывает в граф вызовов, что future ждёт задача waiter, — для своих примитивов синхронизации поверх Future.

Синтаксис

asyncio.future_add_to_awaited_by(future, waiter, /)

Когда задача делает await на Future, связь «кто кого ждёт» видна графу вызовов сама. Ручная запись нужна там, где ожидание идёт в обход await, — как внутри gather или shield. Каждый вызов обязан иметь парный future_discard_from_awaited_by с теми же аргументами, иначе граф будет показывать давно ушедшего ожидающего. Объекты не 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)
    graph = asyncio.capture_call_graph(fut)
    print([g.future is me for g in graph.awaited_by])  # → [True]
    asyncio.future_discard_from_awaited_by(fut, me)  # парный вызов обязателен
    fut.cancel()
asyncio.run(main())

См. также

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