我正在编写代码,使用Twisted等待用户提供的协同程序。在一个简单的例子中,我只需要使用^{asyncio.sleep()
,我需要使用asyncio.ensure_future
将其包装成一个异步任务,该任务将在异步循环中运行,这需要AsyncioSelectorReactor
。我想支持第一种情况,即使没有使用AsyncioSelectorReactor
,所以我不想在所有协程上调用asyncio.ensure_future
。我能想到的唯一方法就是检测协同程序是否需要异步,这有可能吗?或者,也许,有一个更简单的方法来做到这一点?在
检查协同程序中是否引用了asyncio可能会有帮助。考虑以下示例:
使用
^{pr2}$inspect.getclosurevars
,可以检查是否存在异步:当然,当用户的协程从asyncio导入不使用循环的内容(例如异常或常量)时,或者当用户代码不使用导入的协程时,这将给出误报。在
相关问题 更多 >
编程相关推荐