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