【发布时间】:2018-09-20 10:22:08
【问题描述】:
我有一个函数同时接受常规和异步函数(不是协程,而是返回协程的函数)。
在内部它使用asyncio.iscoroutinefunction() test 来查看它获得了哪种类型的函数。
最近,当我尝试创建部分异步函数时,它崩溃了。
在这个演示中,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
问题原因很清楚,但解决方法不明确。
如何动态创建通过测试的部分异步函数?
或
如何测试包裹在partial object 中的函数?
任何一个答案都可以解决问题。
【问题讨论】:
标签: python python-asyncio