Асинхронные генераторы сами по себе не являются сопрограммами и не могут быть await
ed:
>>> loop.run_until_complete(f4())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/haugh/.pyenv/versions/3.6.6/lib/python3.6/asyncio/base_events.py", line 447, in run_until_complete
future = tasks.ensure_future(future, loop=self)
File "/home/haugh/.pyenv/versions/3.6.6/lib/python3.6/asyncio/tasks.py", line 526, in ensure_future
raise TypeError('An asyncio.Future, a coroutine or an awaitable is '
TypeError: An asyncio.Future, a coroutine or an awaitable is required
Я думаю, что вы уже определили лучший способ проверки, использовался ли async
для определения функции:
def async_used(func):
return inspect.iscoroutinefunction(func) or inspect.isasyncgenfunction(func)