【发布时间】:2017-05-20 21:59:50
【问题描述】:
在tornado 4.3 + python3中,如果我有很多层异步函数,例如:
@gen.coroutine
def layer_2():
return(yield async_func())
@gen.coroutine
def layer_1():
return(yield layer_2())
@gen.coroutine
def main():
return(yield layer_1())
由于异步函数返回一个 Future(产生这个 Future 返回它的结果),要在 main 中获得 async_func 的返回值,我必须:
在每个被调用者中,将产生的 Future 包装在 return 语句中
在每个调用者中,要将值向上传递到调用链,产生被调用者并再次在 return 语句中扭曲返回的值
有没有办法避免这种模式?
【问题讨论】:
标签: python function asynchronous tornado future