Python 3.5+collectionsпонятие
collections.abc.Coroutine
collections.abc — протоколы
Протокол корутины: awaitable с методами send/throw/close.
Синтаксис
isinstance(obj, collections.abc.Coroutine)
Вызов async-функции ничего не выполняет — он лишь создаёт объект-корутину, и если его не дождаться через await или не передать в asyncio, тело так и не отработает, а при сборке мусора вы получите RuntimeWarning про «coroutine was never awaited». Coroutine — более узкий тип, чем Awaitable: Task и Future ждать можно, но эту проверку они не проходят, так что для «можно ли сделать await» проверяйте Awaitable.
Примеры
import collections.abc as abc
async def f(): pass
c = f()
print(isinstance(c, abc.Coroutine)) # → True
c.close()
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности