Python 3.4+Асинхронное программированиефункция
asyncio.iscoroutine()
интроспекция
Проверяет, что объект — объект корутины, то есть результат вызова async-функции, а не сама функция.
Синтаксис
asyncio.iscoroutine(obj)
Частая путаница: iscoroutine(fetch) — False, iscoroutine(fetch()) — True. Сам вызов fetch() ничего не выполняет, а лишь создаёт объект; если его не дождаться и не закрыть, Python напишет RuntimeWarning «coroutine was never awaited». Для проверки функции нужен inspect.iscoroutinefunction, а для «можно ли сделать await» — inspect.isawaitable: Task и Future не корутины.
Примеры
import asyncio
async def fetch():
return 1
coro = fetch()
print(asyncio.iscoroutine(fetch)) # → False — это функция
print(asyncio.iscoroutine(coro)) # → True
coro.close() # иначе RuntimeWarning: coroutine was never awaited
import asyncio
async def main():
task = asyncio.create_task(asyncio.sleep(0.01))
print(asyncio.iscoroutine(task)) # → False — задача awaitable, но не корутина
await task
asyncio.run(main())
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности