Tornado AsyncHTTPClient Future資料提交
阿新 • • 發佈:2020-11-17
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()