Python Glossary English

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