tornado 里面如何使用Future中的数据?

发布于 2022-09-01 12:40:43 字数 736 浏览 10 评论 0

tonado官方文档(http://www.tornadoweb.org/en/stable/gen.html
可以通过定义以下方法获取异步返回值:
@gen.coroutine
def fetch_json(url):
response = yield AsyncHTTPClient().fetch(url)
raise gen.Return(json_decode(response.body))

但是以下代码调用fetch_json方法,得到一个数据(tornado.concurrent.Future),在get方法里面怎么获取返回的response.body的值?

class TestHandler(BaseHtHandler):
@asynchronous
def get(self):
log.info("TestHandler.get")
self.set_header("Access-Control-Allow-Origin", "*")
response=self.fetch_json("http://www.baidu.com")
self.finish()

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

漫漫岁月 2022-09-08 12:40:43
from tornado.web import RequestHandler, Application, asynchronous
from tornado.ioloop import IOLoop
from tornado.httpserver import HTTPServer
from tornado import gen
from tornado.httpclient import AsyncHTTPClient

class IndexHandler(RequestHandler):
    @asynchronous
    @gen.coroutine
    def get(self):
        response = self.fetch_json('http://www.qq.com')
        result = yield response
        self.write(result)
        self.finish()

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

app = Application([('/', IndexHandler)], debug = True)
http_server = HTTPServer(app)
http_server.listen(1888)
IOLoop.instance().start()

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文