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 15 Python
Python中的默认参数实例分析
Jan 29 Python
PyQt5 QSerialPort子线程操作的实现
Apr 21 Python
Python实现的txt文件去重功能示例
Jul 07 Python
Python实现识别图片内容的方法分析
Jul 11 Python
树莓派3 搭建 django 服务器的实例
Aug 29 Python
python中通过selenium简单操作及元素定位知识点总结
Sep 10 Python
使用python-opencv读取视频,计算视频总帧数及FPS的实现
Dec 10 Python
python实现上传文件到linux指定目录的方法
Jan 03 Python
使用pytorch完成kaggle猫狗图像识别方式
Jan 10 Python
keras 使用Lambda 快速新建层 添加多个参数操作
Jun 10 Python
python在一个范围内取随机数的简单实例
Aug 16 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使用数组实现队列
2012/02/05 PHP
PHP基础教程(php入门基础教程)一些code代码
2013/01/06 PHP
PHP提交表单失败后如何保留已经填写的信息
2014/06/20 PHP
php实现事件监听与触发的方法
2014/11/21 PHP
PHP基于GD库的图像处理方法小结
2016/09/27 PHP
PHP/HTML混写的四种方式总结
2017/02/27 PHP
cssQuery()的下载与使用方法
2007/01/12 Javascript
ejs v9 javascript模板系统
2012/03/21 Javascript
jQuery截取指定长度字符串的实现原理及代码
2014/07/01 Javascript
分享一个自己动手写的jQuery分页插件
2014/08/28 Javascript
jQuery表格列宽可拖拽改变且兼容firfox
2014/09/03 Javascript
JS 获取鼠标左右键的键值方法
2014/10/11 Javascript
jQuery语法小结(超实用)
2015/12/31 Javascript
微信小程序 实战小程序实例
2016/10/08 Javascript
Angular页面间切换及传值的4种方法
2016/11/04 Javascript
Bootstrap CSS组件之面包屑导航(breadcrumb)
2016/12/17 Javascript
Angular2安装angular-cli
2017/05/21 Javascript
基于BootStrap multiselect.js实现的下拉框联动效果
2017/07/28 Javascript
禁止弹窗中蒙层底部页面跟随滚动的几种方法
2017/12/07 Javascript
浅谈vue项目4rs vue-router上线后history模式遇到的坑
2018/09/27 Javascript
详解nuxt路由鉴权(express模板)
2018/11/21 Javascript
解决vue v-for src 图片路径问题 404
2019/11/12 Javascript
Vue+abp微信扫码登录的实现代码示例
2020/01/06 Javascript
微信小程序连续签到7天积分获得功能的示例代码
2020/08/20 Javascript
Python实现类继承实例
2014/07/04 Python
Python实现以时间换空间的缓存替换算法
2016/02/19 Python
Python 制作糗事百科爬虫实例
2016/09/22 Python
python 获取url中的参数列表实例
2018/12/18 Python
Python面向对象程序设计多继承和多态用法示例
2019/04/08 Python
python操作日志的封装方法(两种方法)
2019/05/23 Python
为什么黑客都用python(123个黑客必备的Python工具)
2020/01/31 Python
介绍一下linux的文件权限
2012/02/15 面试题
简历中个人自我评价范文
2013/12/26 职场文书
自我推荐信范文
2014/05/09 职场文书
捐款倡议书格式范文
2014/05/14 职场文书
与美同行演讲稿
2014/09/13 职场文书