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实现人人网登录示例分享
Jan 19 Python
python判断、获取一张图片主色调的2个实例
Apr 10 Python
用yum安装MySQLdb模块的步骤方法
Dec 15 Python
一篇文章快速了解Python的GIL
Jan 12 Python
Python WSGI的深入理解
Aug 01 Python
Django基础三之视图函数的使用方法
Jul 18 Python
Pandas 重塑(stack)和轴向旋转(pivot)的实现
Jul 22 Python
详解有关PyCharm安装库失败的问题的解决方法
Feb 02 Python
使用Python将Exception异常错误堆栈信息写入日志文件
Apr 08 Python
Mac PyCharm中的.gitignore 安装设置教程
Apr 16 Python
安装Anaconda3及使用Jupyter的方法
Oct 27 Python
详解Scrapy Redis入门实战
Nov 18 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位运算的简单权限设计
2013/06/30 PHP
WebQQ最新登陆协议的用法
2014/12/22 PHP
大家都应该掌握的PHP关联数组使用技巧
2015/12/25 PHP
Joomla语言翻译类Jtext用法分析
2016/05/05 PHP
Gambit vs ForZe BO3 第一场 2.13
2021/03/10 DOTA
常见JS效果之图片减速度滚动实现代码
2011/12/08 Javascript
jquery $.fn $.fx是什么意思有什么用
2013/11/04 Javascript
jQuery替换字符串(实例代码)
2013/11/13 Javascript
javascript中不等于的代码是什么怎么写
2013/12/29 Javascript
用jquery的方法制作一个简单的导航栏
2014/06/23 Javascript
详细分析使用AngularJS编程中提交表单的方式
2015/06/19 Javascript
jQuery中.attr()和.data()的区别分析
2017/09/03 jQuery
JavaScript函数、闭包、原型、面向对象学习笔记
2018/09/06 Javascript
纯异步nodejs文件夹(目录)复制功能
2019/09/03 NodeJs
Layui表格监听行单双击事件讲解
2019/11/14 Javascript
vue样式穿透 ::v-deep的具体使用
2020/06/04 Javascript
Python Mysql数据库操作 Perl操作Mysql数据库
2009/01/12 Python
在python中使用正则表达式查找可嵌套字符串组
2017/10/24 Python
Python with语句上下文管理器两种实现方法分析
2018/02/09 Python
python3.6+django2.0开发一套学员管理系统
2018/03/03 Python
Python基于pycrypto实现的AES加密和解密算法示例
2018/04/10 Python
Python实现求两个数组交集的方法示例
2019/02/23 Python
使用Python爬虫库requests发送请求、传递URL参数、定制headers
2020/01/25 Python
适合Python初学者的一些编程技巧
2020/02/12 Python
pyecharts调整图例与各板块的位置间距实例
2020/05/16 Python
基于TensorFlow的CNN实现Mnist手写数字识别
2020/06/17 Python
Python Matplotlib绘图基础知识代码解析
2020/08/31 Python
Python如何实现机器人聊天
2020/09/10 Python
英国顶级家庭折扣店:The Works
2017/09/06 全球购物
医院护理人员的自我评价分享
2013/10/04 职场文书
管理学专业个人求职信范文
2013/12/13 职场文书
火锅店的活动方案
2014/08/15 职场文书
铁路安全反思材料
2014/12/24 职场文书
小学教师岗位职责
2015/04/02 职场文书
详解nginx.conf 中 root 目录设置问题
2021/04/01 Servers
java项目构建Gradle的使用教程
2022/03/24 Java/Android