Python Tornado核心及相关原理详解


Posted in Python onJune 24, 2020

Tornado的核心是什么?Tornado 的核心是 ioloop 和 iostream 这两个模块,前者提供了 一个高效的 I/O 事件循环,后者则封装了 一个无阻塞的 socket 。 通过向 ioloop 中添加网络 I/O 事件,利用无阻塞的 socket ,再搭配相应的回调函数,便可达到梦寐以求的高效异步执行。

一、Tornado简介

Tornado全称Tornado Web Server,是一个用Python语言写成的Web服务器兼Web应用框架,由FriendFeed公司在自己的网站FriendFeed中使用,被Facebook收购以后框架在2009年9月以开源软件形式开放给大众。

二、Tornado特点:

作为Web框架,是一个轻量级的Web框架,其拥有异步非阻塞IO的处理方式。

作为Web服务器,Tornado有较为出色的抗负载能力,官方用nginx反向代理的方式部署Tornado和其它Python web应用框架进行对比,结果最大浏览量超过第二名近40%。

三、Tornado性能:

Tornado有着优异的性能。它试图解决C10k问题,即处理大于或等于一万的并发。

Tornado框架和服务器一起组成一个WSGI的全栈替代品。单独在WSGI容器中使用tornado网络框架或者tornaod http服务器,有一定的局限性,为了最大化的利用tornado的性能,推荐同时使用tornaod的网络框架和HTTP服务器。

四、应用场景

1,用户量大,高并发

如秒杀抢购、双十一某宝购物、春节抢火车票

2,大量的HTTP持久连接

使用同一个TCP连接来发送和接收多个HTTP请求/应答,而不是为每一个新的请求/应答打开新的连接的方法。

对于HTTP 1.0,可以在请求的包头(Header)中添加Connection: Keep-Alive。

四、Tornado开发方向:

Tornado走的是少而精的方向,注重的是性能优越,它最出名的是异步非阻塞的设计方式。

  • HTTP服务器

  • 异步编程

  • WebSockets

五、tornado的基础web框架模块

RequestHandler

封装了对应一个请求的所有信息和方法,write(响应信息)就是写响应信息的一个方法;对应每一种http请求方式(get、post等),把对应的处理逻辑写进同名的成员方法中(如对应get请求方式,就将对应的处理逻辑写在get()方法中),当没有对应请求方式的成员方法时,会返回“405: Method Not Allowed”错误。

Application

Tornado Web框架的核心应用类,是与服务器对接的接口,里面保存了路由信息表,其初始化接收的第一个参数就是一个路由信息映射元组的列表;其listen(端口)方法用来创建一个http服务器实例,并绑定到给定端口

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 匹配任意字符(包括换行符)的正则表达式写法
Oct 29 Python
简单的Python抓taobao图片爬虫
Oct 26 Python
Python中的闭包详细介绍和实例
Nov 21 Python
Python中的ConfigParser模块使用详解
May 04 Python
Python实现二分查找算法实例
May 26 Python
jupyter安装小结
Mar 13 Python
详谈Pandas中iloc和loc以及ix的区别
Jun 08 Python
Python爬取数据并写入MySQL数据库的实例
Jun 21 Python
python自动发送测试报告邮件功能的实现
Jan 22 Python
python实现音乐播放和下载小程序功能
Apr 26 Python
Django中文件上传和文件访问微项目的方法
Apr 27 Python
Python实现视频中添加音频工具详解
Dec 06 Python
如何使用Python处理HDF格式数据及可视化问题
Jun 24 #Python
pytorch SENet实现案例
Jun 24 #Python
利用PyTorch实现VGG16教程
Jun 24 #Python
python安装读取grib库总结(推荐)
Jun 24 #Python
Pytorch mask-rcnn 实现细节分享
Jun 24 #Python
在Pytorch中使用Mask R-CNN进行实例分割操作
Jun 24 #Python
OpenCV+python实现实时目标检测功能
Jun 24 #Python
You might like
浅谈PHP的反射机制
2016/12/15 PHP
PHP中cookie知识点学习
2018/05/06 PHP
IE6,IE7下js动态加载图片不显示错误
2010/07/17 Javascript
jQuery1.3.2 升级到jQuery1.4.4需要修改的地方
2011/01/06 Javascript
再JavaScript的jQuery库中编写动画效果的指南
2015/08/13 Javascript
jquery 实现输入邮箱时自动补全下拉提示功能
2015/10/04 Javascript
js中编码函数:escape,encodeURI与encodeURIComponent详解
2017/03/21 Javascript
基于Vue实现拖拽功能
2020/07/29 Javascript
基于vue实现可搜索下拉框定制组件
2020/03/26 Javascript
VUE DOM加载后执行自定义事件的方法
2018/09/07 Javascript
Jquery实现无缝向上循环滚动列表的特效
2019/02/13 jQuery
webpack3.0升级4.0的方法步骤
2020/04/02 Javascript
python实现类的静态变量用法实例
2015/05/08 Python
tensorflow中next_batch的具体使用
2018/02/02 Python
Python实现检测文件MD5值的方法示例
2018/04/11 Python
详解Python中is和==的区别
2019/03/21 Python
python 字典操作提取key,value的方法
2019/06/26 Python
Python使用ffmpy将amr格式的音频转化为mp3格式的例子
2019/08/08 Python
python rsa实现数据加密和解密、签名加密和验签功能
2019/09/18 Python
pytorch cuda上tensor的定义 以及减少cpu的操作详解
2020/06/23 Python
Python pathlib模块使用方法及实例解析
2020/10/05 Python
让IE9以下版本的浏览器兼容HTML5的方法
2014/03/12 HTML / CSS
马来西亚网上购物平台:ezbuy
2018/02/13 全球购物
捷克汽车配件和工具销售网站:TorriaCars
2018/02/26 全球购物
介绍一下Make? 为什么使用make
2016/07/31 面试题
护士自我介绍信
2014/01/13 职场文书
代办社保委托书范文
2014/10/06 职场文书
2014年社区党建工作总结
2014/11/11 职场文书
酒店保洁员岗位职责
2015/02/26 职场文书
幼儿园小班工作总结2015
2015/04/25 职场文书
2015年度学校卫生工作总结
2015/05/12 职场文书
指导老师鉴定意见
2015/06/05 职场文书
Python Numpy之linspace用法说明
2021/04/17 Python
python之基数排序的实现
2021/07/26 Python
MySQL约束超详解
2021/09/04 MySQL
MySQL数据库如何查看表占用空间大小
2022/06/10 MySQL