Tornado AsyncHTTPClient Future数据提交
Tornado AsyncHTTPClient Future数据提交示例
# -.- coding:utf-8 -.- # __author__ = 'zt' import tornado.ioloop from tornado.concurrent import Future from tornado.httpclient import AsyncHTTPClient def async_fetch_future(url): http_client = AsyncHTTPClient() my_future = Future() fetch_future = http_client.fetch(url) fetch_future.add_done_callback(lambda f: my_future.set_result(f.result())) return my_future def main(): return async_fetch_future('http://www.qq.com').running() if __name__ == '__main__': response = tornado.ioloop.IOLoop.instance().run_sync(main) print response.body # -.- coding:utf-8 -.- # __author__ = 'zt' import json import tornado.ioloop from tornado.httpclient import AsyncHTTPClient from tornado.concurrent import Future def futrue_callback(res_future): print("调用回调函数 Futrue") s = res_future.result().body.decode('gbk') print(s) def async_fetch_future(url): """ 异步请求,使用Future类 :param url: :return: """ http_client = AsyncHTTPClient() my_future = Future() fetch_future = http_client.fetch(url) fetch_future.add_done_callback( # Future的result默认为HttpResponce lambda f: my_future.set_result(f.result())) return my_future if __name__ == '__main__': # 异步请求,返回Futrue类 s = async_fetch_future("http://www.qq.com") io_loop = tornado.ioloop.IOLoop.current() io_loop.add_future(s, callback=futrue_callback) io_loop.start()