У меня есть функция, которая принимает как обычные, так и асинхронные функции (не сопрограммы, а функции, возвращающие сопрограммы).
Внутренне она использует asyncio.iscoroutinefunction()
test , чтобы увидеть, какой тип функции онаgot.
Недавно он сломался, когда я попытался создать частичную асинхронную функцию.
В этой демонстрации ptest
не распознается как функция обхода, дажеесли он возвращает сопрограмму, т.е. ptest()
является сопрограммой.
import asyncio
import functools
async def test(arg): pass
print(asyncio.iscoroutinefunction(test)) # True
ptest = functools.partial(test, None)
print(asyncio.iscoroutinefunction(ptest)) # False!!
print(asyncio.iscoroutine(ptest())) # True
Причина проблемы ясна, но решение - нет.
Как динамическисоздать частичную асинхронную функцию, которая проходит тест?
ИЛИ
Как проверить функцию, обернутую в частичный объект ?
Любой ответ решитпроблема.