1.Tornado概述
随着Python技术的益发流行,在web开发领域也逐渐凸显出来python强大的开发优势和使用场景,各种基于python的web框架开始流行在各种类型的项目中。
其中尤其是传统的Django、Tornado、Bottle、Flask以及新型的sanic等各种框架的使用频次非常之高,这里就针对python web开发领域剑走偏锋的Tornado框架进行详细的解析和操作的指导。
1.1. 特点特性
Tornado框架主要是python实现的非阻塞式的web框架兼服务器,是web开发轻量级框架的代表。
|
在传统的web开发反向,服务器的处理性能一直都是有待突破的瓶颈,在tornado之前一直都有一个问题困扰着所有的程序员,当服务器的并发连接数量达到10000个连接时服务器的处理性能会急剧下降,服务器在很高的负载下会迅速消耗系统资源导致后续的结果不可预测,也就是传说中的C10K问题
Tornado另辟蹊径,利用系统底层内核操作模块epoll/kqueue的异步事件处理机制进行了该问题的处理,在一定程度上突破了C10K问题带来的困扰,也成为了tornado框架被大家广泛使用的一个原因。
|
首先,Tornado本身是一个底层通过非阻塞式IO实现的、底层处理方式是基于linux epoll/BSD kqueue内核事件处理机制实现的高性能并发处理的web服务器
其次,Tornado是一个高效快速开发高性能高并发web应用程序的web开发框架
第三,Tornado主要适用于需要处理大量异步操作的web项目中,更能发挥出框架本身处理机制带来的性能福利
1.2. 使用优势
平行对比之下,Tornado由于其底层使用epoll/kqueue事件处理方式及非阻塞式的服务操作,在处理web项目中常规的大量的异步请求的情况下,性能远远高于Django、Flask、Bottle这样的框架
尽管不同的框架其处理性能有一定的差异,但是我们实际项目开发过程中,重要的不只是性能的判断,更多的综合因素都需要考虑,如开发技术成本和技术风险、开发效率、维护成本等等,所以要根据实际需求的应用场景进行web框架的选型
Tornado框架本身的使用优势在于其高性能的并发处理和异步处理上,但是必须要运行在****linux/unix****内核操作系统上才能发挥其巨大的优势,同时Tornado web项目开发和其他框架如Django不同的是,开发过程需要自己从头开始搭建(当然如果你已经是web开发老鸟的话,将自己开发的模块化模型构建好,通过一条命令直接构建也是可以的,如果这样的话你也不同看这篇文档了),框架中不提供数据模型和数据库交互的ORM层的实现,需要自己独立开发进行操作。如果满足上述需要的话,选择Tornado,你不会留下遗憾!否则,请根据如下需要选择框架进行操作,请自觉站队:
l 效率型:Django Framework
l 成本型:Flask Framework
l 追新型:Sanic Framework
l 怀旧型:WebPy Framework/Bottle Framework
l 性能型:Tornado Framework/Sanic Framework
1.3. 架构模式
随着web框架技术定位和软件开发流程的发展,Tornado更加追求少而精的开发方向,将更多的功能流程的定义还给开发人员进行处理,框架本身只对项目处理性能进行高度的优化操作,成就了Tornado框架作为轻量级框架的典型架构代表:
|
image.png
| |
Tornado工作于应用层,其本身主要通过四个部分组成:
- Web框架
- HTTP服务端 + 客户端
- 异步网络库
- 协程库
|
Tornado框架只负责应用层的管理配置和开发定义,极大的简化框架对流程的高度封装带来的限制(封装底层处理流程造成的流程定义僵化,高度封装造成的BUG维护难度升级)
将更多的开发自由度交由开发人员进行操作,由此实现了性能+框架+高效+定制的统一。
2.安装配置
2.1. 官方网站
http://www.tornadoweb.org/en/stable/
tornado的官方网站,就是tornado的官方文档,官方文档通过模块化组件化的方式整理了tornado框架的细节操作,让文档更加趋于API接口说明文档,但是又不全是说明文档,如果对于技术类型的文档了解不多的话,对Tornado官方提供的文档很难下嘴!
http://tornado-zh.readthedocs.io/zh/latest/
技术人员提供的tornado官方文档的中文版本,建议大家对于tornado有了一定的了解并且拥有能开发项目的基本能力之后,就可以查看对应的官方文档解决项目中遇到的细节问题了,如果是入门新手,不推荐从官方文档入手
http://demo.pythoner.com/itt2zh/
说到入门新手,introduce to tornado这本书无疑是最好的首选,上述链接是该书的中文翻译版本,对于新手入门是完全足够了。如果工作中需要用到tornado技术的话,祝你好运了
2.2. 安装方式
(1) 手工安装
从以下网站,下载tornado压缩包
https://github.com/tornadoweb/tornado/releases
根据不同的操作系统下载不同的压缩包
|
image.png
|
解压压缩包,通过如下命令进行安装
# 进入解压后的目录
cd tornado-5.0.2
编译构建目标文件
python setup.py build
执行安装命令
python setup.py install
(2) 自动安装
相对于手工安装方式,相信大家都更加喜欢自动安装方式,tornado作为一个python模块,通过常规模块安装的方式可以直接安装
通过执行如下命令进行安装,安装过程中可能会出现Read time out,是因为网络超时断开了下载,重新执行安装,直到出现successfully installed tornado的提示即可!
# 默认安装最新版
pip install tornado
# 安装指定版本
pip install tornado==5.0.2