首页 > 解决方案 > defer.succeed 的 asyncio 等价物是什么?

问题描述

如标题所述,Twisted 的defer.succeed的 asyncio 等价物是什么?或者,如何从纯 Python 值创建协程对象?

请注意,这与我们如何在需要协程的情况下调用普通函数不同?. 我总是可以做类似以下的事情,但我想知道是否有更好的方法。

value_to_convert_to_coroutine_object = 5
async def foo(bar):
     return await asyncio.coroutine(lambda: value_to_convert_to_coroutine_object)()

标签: pythonpython-asynciotwistedcoroutine

解决方案


defer.succeed()没什么花哨的,据我所知,没有一个 asyncio 函数可以复制它。

def succeed(result):
    f = Future()
    f.set_result(result)
    f.done()
    return f

我记得在 asyncio IRC 上,作者不想制作用户可以简单地自己写出来的功能。这可能就是为什么不存在这样的功能的原因。

至于您问题的第二部分,您的解决方案似乎很简单。我为单元测试做了类似的事情。


推荐阅读