Python 3.12+inspectфункция
inspect.markcoroutinefunction()
корутины и генераторы
Декоратор: помечает обычную функцию, возвращающую корутину, так, чтобы iscoroutinefunction() давал для неё True.
Синтаксис
@inspect.markcoroutinefunction
Пометка — обещание, а не превращение: функция остаётся синхронной и возвращает то, что возвращала, так что пометить функцию, которая корутину не возвращает, значит обмануть фреймворк. Возвращается тот же объект, помеченный атрибутом, — для встроенных и других объектов без __dict__ это AttributeError. Нужна для API, которые выбирают поведение по iscoroutinefunction (например, Django); где можно — просто пишите async def.
Примеры
import asyncio, inspect
async def fetch():
return 'data'
@inspect.markcoroutinefunction
def fetch_cached():
return fetch() # обычная функция, отдающая корутину
print(inspect.iscoroutinefunction(fetch_cached)) # → True
print(asyncio.run(fetch_cached())) # → data
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности