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 heapq使用详解及实例代码
Jan 25 Python
Python中用post、get方式提交数据的方法示例
Sep 22 Python
Python3操作SQL Server数据库(实例讲解)
Oct 21 Python
Python中一行和多行import模块问题
Apr 01 Python
Python基于sklearn库的分类算法简单应用示例
Jul 09 Python
python3实现多线程聊天室
Dec 12 Python
Python列表对象实现原理详解
Jul 01 Python
Python 实现文件读写、坐标寻址、查找替换功能
Sep 11 Python
python如何调用字典的key
May 25 Python
python线程池如何使用
May 28 Python
用python实现名片管理系统
Jun 18 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
重新封装zend_soap实现http连接安全认证的php代码
2011/01/12 PHP
php中替换字符串函数strtr()和str_repalce()的用法与区别
2016/11/25 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
2018/08/07 PHP
Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
2019/12/04 PHP
js 弹出框 替代浏览器的弹出框
2010/10/29 Javascript
自定义一个jquery插件[鼠标悬浮时候 出现说明label]
2011/06/27 Javascript
js对象关系图 方便dom操作
2012/03/18 Javascript
JS实现网页表格自动变大缩小的方法
2015/03/09 Javascript
jQuery AJAX timeout 超时问题详解
2016/06/21 Javascript
学习vue.js中class与style绑定
2016/12/03 Javascript
VueJs路由跳转——vue-router的使用详解
2017/01/10 Javascript
javascript深拷贝的原理与实现方法分析
2017/04/10 Javascript
Angularjs 双向绑定时字符串的转换成数字类型的问题
2017/06/12 Javascript
深入理解Vue-cli搭建项目后的目录结构探秘
2017/07/13 Javascript
微信小程序加载机制及运行机制图解
2019/11/27 Javascript
JavaScript检测浏览器是否支持CSS变量代码实例
2020/04/03 Javascript
JavaScript手写数组的常用函数总结
2020/11/22 Javascript
[41:56]Spirit vs Liquid Supermajor小组赛A组 BO3 第一场 6.2
2018/06/03 DOTA
举例详解Python中循环语句的嵌套使用
2015/05/14 Python
使用Python神器对付12306变态验证码
2016/01/05 Python
教大家使用Python SqlAlchemy
2016/02/12 Python
一些常用的Python爬虫技巧汇总
2016/09/28 Python
python 判断网络连通的实现方法
2018/04/22 Python
Django 框架模型操作入门教程
2019/11/05 Python
Python 脚本实现淘宝准点秒杀功能
2019/11/13 Python
基于python实现生成指定大小txt文档
2020/07/20 Python
用CSS3实现Win8风格的方格导航菜单效果
2013/04/10 HTML / CSS
玖熙女鞋美国官网:Nine West
2016/10/06 全球购物
J2EE系统只能是基于web
2015/09/08 面试题
市场营销管理制度
2014/01/29 职场文书
班组安全员工作职责
2014/02/01 职场文书
信用社主任竞聘演讲稿
2014/05/23 职场文书
物流管理系毕业生求职信
2014/06/03 职场文书
车间安全生产管理制度
2015/08/06 职场文书
python中opencv实现图片文本倾斜校正
2021/06/11 Python
十大冰系宝可梦排名,颜值最高的阿罗拉九尾,第三使用率第一
2022/03/18 日漫