先把可运行代码列出来, 注释和说明后续补充.
# -.- coding:utf-8 -.-
# __author__ = 'zt'
from tornado import gen
import tornado.ioloop
from tornado.httpclient import AsyncHTTPClient
@gen.coroutine
def fetch_coroutine(url):
http_client = AsyncHTTPClient()
response = yield http_client.fetch(url)
raise gen.Return(response.body)
def main():
return fetch_coroutine('http://www.qq.com')
if __name__ == '__main__':
response = tornado.ioloop.IOLoop.instance().run_sync(main)
print response
# -.- coding:utf-8 -.-
# __author__ = 'zt'
import tornado.ioloop
from tornado.httpclient import AsyncHTTPClient
from tornado import gen
def futrue_callback(res_future):
print('zzz', res_future.result().decode('gbk'))
@gen.coroutine
def fetch_coroutine(url):
http_client = AsyncHTTPClient()
response = yield http_client.fetch(url)
raise gen.Return(response.body)
if __name__ == '__main__':
s = fetch_coroutine('http://www.qq.com')
io_loop = tornado.ioloop.IOLoop.current()
io_loop.add_future(s, futrue_callback)
io_loop.start()
参考: <http://www.tornadoweb.org/en/stable/guide/async.html#examples>
参考: <http://www.cnphp6.com/archives/85012>