Python学习---IO的异步[tornado模块]
Posted 小a玖拾柒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习---IO的异步[tornado模块]相关的知识,希望对你有一定的参考价值。
tornado是一个异步非阻塞的WEB框架.它的异步非阻塞实际上就是用事件循环写的。
主要体现在2点:
1. 作为webserver可以接收请求,同时支持异步处理请求。Django只能处理完成上一个请求后才能处理下一个请求。
2. 作为客户端可以支持类似gevent,twisted这样的异步IO,同时发送多个请求,然后等待请求结果。
安装tornado
pip3 install tornado
Tornado实例
from tornado.httpclient import AsyncHTTPClient # 异步请求客户端 from tornado.httpclient import HTTPRequest from tornado import ioloop # 监听IO循环 def handle_response(response): """ 处理返回值内容(需要维护计数器,来停止IO循环),调用 ioloop.IOLoop.current().stop() :param response: """ if response.error: print("Error:", response.error) else: print(response.body) def func(): url_list = [ \'http://www.baidu.com\', \'http://www.bing.com\', ] for url in url_list: print(url) http_client = AsyncHTTPClient() # 异步发送请求 # 封装请求的URL到HTTPRequest(url),执行完成后执行回调函数 http_client.fetch(HTTPRequest(url), handle_response) # 拿到一个IO循环并添加一个函数进去 ioloop.IOLoop.current().add_callback(func) # 函数执行且请求已经发送过去 ioloop.IOLoop.current().start() # 表示一直在等待请求的返回
以上是关于Python学习---IO的异步[tornado模块]的主要内容,如果未能解决你的问题,请参考以下文章