Python 等待龙卷风的未来完成

Python 等待龙卷风的未来完成,python,tornado,Python,Tornado,我有一个返回未来的函数。我想为函数创建一个修饰符,该修饰符等待将来完成,然后返回将异步函数转换为阻塞函数的结果(我将在RESTAPI中使用该函数)。有什么方法可以做到这一点吗?要解决未来,你需要让它屈服。类似的方法可能会奏效: from tornado import gen def blocking(func): def new_func(*args, **kwargs): result = yield func(*args, **kwargs)

我有一个返回未来的函数。我想为函数创建一个修饰符,该修饰符等待将来完成,然后返回将异步函数转换为阻塞函数的结果(我将在RESTAPI中使用该函数)。有什么方法可以做到这一点吗?

要解决未来,你需要
让它屈服。类似的方法可能会奏效:

from tornado import gen    

def blocking(func):
    def new_func(*args, **kwargs):
        result = yield func(*args, **kwargs)
        return result
    return gen.coroutine(new_func)

要解决一个未来,你需要
产生它。类似的方法可能会奏效:

from tornado import gen    

def blocking(func):
    def new_func(*args, **kwargs):
        result = yield func(*args, **kwargs)
        return result
    return gen.coroutine(new_func)

发布你的函数的代码以得到更好的答案。发布你的函数代码以得到更好的答案。问题是如果代码> fn>代码>本身调用另一个函数,由<代码> @同步> /代码>将发生错误。代码>运行时错误:IOOOP已经运行。你能告诉我一些解决方法吗?在这点上,我认为你必须考虑。认真考虑你是否解决了正确的问题。如果你不想让你的代码是异步的,为什么要用协同程序来编写呢?如果您确实希望它是异步的,为什么要使用此装饰器?我使用的是aync库(没有其他选择)但是,我希望我的代码对于REST API是同步的。问题是如果代码> fn<代码>本身调用另一个函数,由<代码> @同步> /代码>会发生错误。代码>运行时错误:IOOOP已经运行。你能告诉我一些解决方法吗?在这一点上,我认为你必须认真考虑你是否正在解决正确的问题。如果你不想让你的代码是异步的,为什么要用协同程序来编写呢?如果您确实希望它是异步的,为什么要使用此装饰程序?我使用的是aync库(没有其他选择),但我希望我的代码是针对REST api的同步。Python版本<3.3。不允许在generator.Python版本<3.3中使用参数“return”。不允许在生成器中使用参数“return”。