- Chapter: Tornado背景知识介绍
Tornado 是一个开源的网络服务器框架,该平台基于社交聚合网站 FriendFeed 的实时信息服务开发而来。2007年,4名谷歌前软件工程师一起创办了 FriendFeed,旨在使用户能方便地跟踪好友在 Facebook 和 Twitter 等多个社交网站上的活动。结果两年后,Facebook 宣布收购 FriendFeed,这一交易的价格约为5000万美元。而此时,FriendFeed 只有12名员工。据说这帮人后来又到了 Google,搞出了现在的Google App Engine ……
Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本。这个 Web 框架看起来有些像 web.py 或者 Google 的 webapp,不过为了能有效利用非阻塞式服务器环境,这个 Web 框架还包含了一些相关的有用工具和优化。
Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其非阻塞的方式和对 epoll 的运用,Tornado 每秒可以处理数以千计的连接,这意味着对于实时 Web 服务来说,Tornado 是一个理想的 Web 框架。
我们开发这个 Web 服务器的主要目的就是为了处理 FriendFeed 的实时功能 ——在 FriendFeed 的应用里每一个活动用户都会保持着一个服务器连接。
![](https://i-blog.csdnimg.cn/blog_migrate/09ec053e066cb0986bc0daa7fc04be5e.png)
模块
Tornado 是个轻量级框架,它的模块不多,最重要的一个模块是web, 它就是包含了 Tornado 的大部分主要功能的 Web 框架。其它的模块都是工具性质的, 以便让 web 模块更加有用 后面的 Tornado 攻略 详细讲解了 web 模块的使用方法。
主要模块
- web - FriendFeed 使用的基础 Web 框架,包含了 Tornado 的大多数重要的功能
- escape - XHTML, JSON, URL 的编码/解码方法
- database - 对 MySQLdb 的简单封装,使其更容易使用
- template - 基于 Python 的 web 模板系统
- httpclient - 非阻塞式 HTTP 客户端,它被设计用来和 web 及 httpserver 协同工作
- auth - 第三方认证的实现(包括 Google OpenID/OAuth、Facebook Platform、Yahoo BBAuth、FriendFeed OpenID/OAuth、Twitter OAuth)
- locale - 针对本地化和翻译的支持
- options - 命令行和配置文件解析工具,针对服务器环境做了优化
底层模块
- httpserver - 服务于 web 模块的一个非常简单的 HTTP 服务器的实现
- iostream - 对非阻塞式的 socket 的简单封装,以方便常用读写操作
- ioloop - 核心的 I/O 循环