Tornado协程在python2.7如何返回值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tornado协程在python2.7如何返回值相关的知识,希望对你有一定的参考价值。

错误写法

class RemoteHandler(web.RequestHandler):

    @gen.coroutine
    def get(self):
        response = httpclient(‘http://www.baidu.com‘)
        self.write(response.body)

    @gen.coroutine
    def httpClient(url):
        result = yield httpclient.AsyncHTTPClient().fetch(url)
        return result

  

按照一般的方法return会报错

需要使用 raise gen.Return(response.body) 代替return

 

官方例子

@gen.coroutine
def fetch_json(url):
    response = yield AsyncHTTPClient().fetch(url)
    raise gen.Return(json_decode(response.body))

  

In Python 3.3, this exception is no longer necessary: the return statement can be used directly to return a value (previously yield and return with a value could not be combined in the same function).

在python 3.3以上版本, 不在需要抛出异常,可以直接使用return直接返回值。而在之前的版本中,yield和带有返回值的return不能处于一个函数当中。

以上是关于Tornado协程在python2.7如何返回值的主要内容,如果未能解决你的问题,请参考以下文章

如何在主函数中恢复协程的执行?

如何使用协程在android中每1秒检查一次GPS可用性

Unity:为啥协程在所有 Start() 函数之后结束?

Tornado线程池在python2.7的使用

协程在Socket上的应用

tornado中的协程是如何工作的