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多进程编程
Jun 12 Python
python中pandas.DataFrame排除特定行方法示例
Mar 12 Python
关于python的bottle框架跨域请求报错问题的处理方法
Mar 19 Python
python模拟事件触发机制详解
Jan 19 Python
Python代码缩进和测试模块示例详解
May 07 Python
mac下pycharm设置python版本的图文教程
Jun 13 Python
用Python实现读写锁的示例代码
Nov 05 Python
Python玩转加密的技巧【推荐】
May 13 Python
Python提取转移文件夹内所有.jpg文件并查看每一帧的方法
Jun 27 Python
pyinstaller打包单文件时--uac-admin选项不起作用怎么办
Apr 15 Python
python中get和post有什么区别
Jun 19 Python
python interpolate插值实例
Jul 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
ninety plus是什么?ninety plus咖啡好吗?
2021/03/04 新手入门
php过滤输入操作之htmlentities与htmlspecialchars用法分析
2017/02/17 PHP
php获取今日开始时间和结束时间的方法
2017/02/27 PHP
Yii框架实现的验证码、登录及退出功能示例
2017/05/20 PHP
一个实用的php验证码类
2017/07/06 PHP
PHP连接MySQL数据库并以json格式输出
2018/05/21 PHP
表单提交验证类
2006/07/14 Javascript
Javascript 类型转换方法
2010/10/24 Javascript
jqgrid 简单学习笔记
2011/05/03 Javascript
js获取json元素数量的方法
2015/01/27 Javascript
JQuery通过AJAX从后台获取信息显示在表格上并支持行选中
2015/09/15 Javascript
jquery ztree实现模糊搜索功能
2016/02/25 Javascript
js制作支付倒计时页面
2016/10/21 Javascript
jQuery实现文档树效果
2017/02/20 Javascript
利用js查找数组中指定元素并返回该元素的所有索引示例
2017/03/29 Javascript
微信小程序实现表单校验功能
2020/03/30 Javascript
微信小程序 数据绑定及运算的简单实例
2017/09/20 Javascript
在Vue组件中获取全局的点击事件方法
2018/09/06 Javascript
Vue filter格式化时间戳时间成标准日期格式的方法
2018/09/16 Javascript
原生JS实现旋转轮播图+文字内容切换效果【附源码】
2018/09/29 Javascript
Layui之table中的radio在切换分页时无法记住选中状态的解决方法
2019/09/02 Javascript
nodejs各种姿势断点调试的方法
2020/06/18 NodeJs
JavaScript中ES6规范中let和const的用法和区别
2020/08/06 Javascript
JavaScript实现图片放大预览效果
2020/11/02 Javascript
python 正则式 概述及常用字符
2009/05/07 Python
详解python数据结构和算法
2019/04/18 Python
Python sublime安装及配置过程详解
2020/06/29 Python
Python接口自动化测试的实现
2020/08/28 Python
Python实现http接口自动化测试的示例代码
2020/10/09 Python
Html5 Canvas实现图片标记、缩放、移动和保存历史状态功能 (附转换公式)
2020/03/18 HTML / CSS
荷兰和比利时时尚鞋店:Van Dalen
2018/04/23 全球购物
2014年安全生产责任书
2014/07/22 职场文书
2014年转正工作总结
2014/11/08 职场文书
小英雄雨来观后感
2015/06/09 职场文书
干部培训简讯
2015/07/20 职场文书
新兵入伍决心书
2015/09/22 职场文书