Проверьте, является ли функция асинхронной в Python 3.7

Я хотел бы проверить, является ли функция асинхронной, прежде чем вызывать ее в Python. Например, здесь я хотел бы проверить, если f является асинхронным, так что ожидание имеет смысл:

async def call_async_f(f):
    assert function_is_async(f)
    await f()

Как я мог реализовать function_is_async? Я использую Python 3.7, который, кажется, имеет некоторые интересные новые функции асинхронности, и я не возражаю против решения 3.7.

0 ответов

inspect имеет проверки для большинства типов асинхронных объектов, в вашем случае это iscoroutinefunction

import inspect
async def call_async_f(f):
    assert inspect.iscoroutinefunction(f)
    await f()
Другие вопросы по тегам