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列表与元组详解实例
Nov 01 Python
Python内置模块hashlib、hmac与uuid用法分析
Feb 12 Python
windows环境下tensorflow安装过程详解
Mar 30 Python
Python实现批量读取图片并存入mongodb数据库的方法示例
Apr 02 Python
TensorFlow实现Logistic回归
Sep 07 Python
PyTorch之图像和Tensor填充的实例
Aug 18 Python
使用Python的Turtle库绘制森林的实例
Dec 18 Python
python实现简单飞行棋
Feb 06 Python
Python实现结构体代码实例
Feb 10 Python
python合并多个excel文件的示例
Sep 23 Python
如何利用pycharm进行代码更新比较
Nov 04 Python
Python 数据可视化之Matplotlib详解
Nov 02 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
如何实现给定日期的若干天以后的日期
2006/10/09 PHP
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
2007/09/02 PHP
Ajax+PHP 边学边练之四 表单
2009/11/27 PHP
理解PHP中的Session及对Session有效期的控制
2016/01/08 PHP
Yii编程开发常见调用技巧集锦
2016/07/15 PHP
利用PHPExcel实现Excel文件的写入和读取
2017/04/26 PHP
js中的值类型和引用类型小结 文字说明与实例
2010/12/12 Javascript
Jquery利用mouseenter和mouseleave实现鼠标经过弹出层且可以点击
2014/02/12 Javascript
禁用Tab键JS代码兼容Firefox和IE
2014/04/18 Javascript
给应用部分的js代码设定一个统一的入口
2014/06/15 Javascript
Javascript基础知识(三)BOM,DOM总结
2014/09/29 Javascript
完美解决jQuery 鼠标快速滑过后,会执行多次滑出的问题
2016/12/08 Javascript
jQuery Pagination分页插件_动力节点Java学院整理
2017/07/17 jQuery
详解使用Typescript开发node.js项目(简单的环境配置)
2017/10/09 Javascript
vue--点击当前增加class,其他删除class的方法
2018/09/15 Javascript
vue实现的网易云音乐在线播放和下载功能案例
2019/02/18 Javascript
Node.js API详解之 net模块实例分析
2020/05/18 Javascript
JavaScript 常见的继承方式汇总
2020/09/17 Javascript
详解vite+ts快速搭建vue3项目以及介绍相关特性
2021/02/25 Vue.js
[58:18]2018DOTA2亚洲邀请赛3月29日 小组赛B组 iG VS Mineski
2018/03/30 DOTA
python实现的生成随机迷宫算法核心代码分享(含游戏完整代码)
2014/07/11 Python
对numpy的array和python中自带的list之间相互转化详解
2018/04/13 Python
python多线程下信号处理程序示例
2019/05/31 Python
Python利用sqlacodegen自动生成ORM实体类示例
2019/06/04 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
2019/09/06 Python
PyCharm+PyQt5+QtDesigner配置详解
2020/08/12 Python
Python列表推导式实现代码实例
2020/09/09 Python
任意一块网页内容实现“活”的背景(目前火狐浏览器专有)
2014/05/07 HTML / CSS
CSS3色彩模式有哪些?CSS3 HSL色彩模式的定义
2016/04/26 HTML / CSS
澳大利亚最受欢迎的美发和美容在线商店:Catwalk
2018/12/12 全球购物
研究生自荐信
2013/10/09 职场文书
党课培训心得体会
2014/09/02 职场文书
小学语文教学随笔
2015/08/14 职场文书
新年寄语2016
2015/08/17 职场文书
vue3中provide && inject的使用
2021/07/01 Vue.js
JavaScript实现一键复制内容剪贴板
2022/07/23 Javascript