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模块]的更多相关文章
- Python学习---IO的异步[asyncio模块(no-http)]
		Asyncio进行异步IO请求操作: 1. @asyncio.coroutine 装饰任务函数 2. 函数内配合yield from 和装饰器@asyncio.coroutine 配合使用[固定格式 ... 
- Python学习---IO的异步[twisted模块]
		安装twisted模块 Linux: pip3 install twisted Window: a. http://www.lfd.uci.edu/~gohlke/pythonlibs/#twiste ... 
- Python学习---IO的异步[gevent+Grequests模块]
		安装gevent模块 pip3 install gevent Gevent实例 import gevent import requests from gevent import monkey # so ... 
- Python学习---IO的异步[asyncio +aiohttp模块]
		aiohttp aiohttp是在asyncio模块基础上封装的一个支持HTTP请求的模块,内容比8.4.2[基于asyncio实现利用TCP模拟HTTP请求]更全面 安装aiohttp: pip3 ... 
- Python学习---IO的异步[自定义异步IO]
		自定义IO异步基础知识: --所有的请求都基于socket实现,一个请求就是一个socket socket.setblocking(False) 不需要阻塞,一个请求完了发送另外一个,会报错,需解决 ... 
- Python学习系列(六)(模块)
		Python学习系列(六)(模块) Python学习系列(五)(文件操作及其字典) 一,模块的基本介绍 1,import引入其他标准模块 标准库:Python标准安装包里的模块. 引入模块的几种方式: ... 
- python学习第四十八天json模块与pickle模块差异
		在开发过程中,字符串和python数据类型进行转换,下面比较python学习第四十八天json模块与pickle模块差异. json 的优点和缺点 优点 跨语言,体积小 缺点 只能支持 int st ... 
- Python学习day17-常用的一些模块
		figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ... 
- python学习笔记-(九)模块
		基础知识 1. 定义 模块:用来从逻辑上组织python代码(变量,函数,类,逻辑----实现一个功能),本质就是.py结尾的python文件(文件名:test.py,对应的模块就是test) 包:用 ... 
随机推荐
- Java多态的一些陷阱
			Java多态是如何实现的? Java的多态和C++一样,是通过延时绑定(late binding)或者说运行时绑定(runtime binding)来实现的.当调用某一个对象引用的方法时,因为编译器并 ... 
- Storm:分布式流式计算框架
			Storm是一个分布式的.高容错的实时计算系统.Storm适用的场景: Storm可以用来用来处理源源不断的消息,并将处理之后的结果保存到持久化介质中. 由于Storm的处理组件都是分布式的,而且处理 ... 
- [转]How to log queries using Entity Framework 7?
			本文转自:https://stackoverflow.com/questions/26747837/how-to-log-queries-using-entity-framework-7 
- Android 控件:使用下拉列表框--Spinner
			---恢复内容开始--- 一.前段代码 <Spinner android:id="@+id/spin" android:paddingTop="10px" ... 
- Node.js 常用工具util包
			Node.js 常用工具 util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心JavaScript 的功能 过于精简的不足. util.isError(obj); util.is ... 
- log4j.properties配置模板
			# For JBoss: Avoid to setup Log4J outside $JBOSS_HOME/server/default/deploy/log4j.xml! # For all oth ... 
- HDFS要点剖析
			谈到大数据,不得不提的一个名词是"HDFS".它是一种分布式文件存储系统,其系统架构图如下图所示: 从图中可以了解到的几个关键概念 元数据(MetaData) 机架(Rock) 块 ... 
- python 软件管理规范
			一.背景 软件开发是一个系统工程,当然编码实现是其中尤其重要的一个环节,关乎到功能需求的实现好坏.这个环节中除了编码这一硬功之外,与之相关的编码风格这一柔道,虽然没有直接决定功能的实现与否,但却在很大 ... 
- 当div元素内的内容超出其宽度时,自动隐藏超出的内容
			word-break:keep-all;/* 不换行 */ white-space:nowrap;/* 不换行 */ overflow:hidden;/* 内容超出宽度时隐藏超出部分的内容 */ te ... 
- 自己编写jQuery插件 之 放大镜
			一. 效果图 二. 原理讲解 1. 用到了两张图片,一张小图,一张大图. 2. 小图用于直接在页面上显示,大图则用于放大镜内显示 3. 放大镜实际是一个div,而大图则是这个div的背景图 4. 小图 ... 
