服务器之家

专注于服务器技术!
当前位置:首页 > 脚本编程 > Python

Tornado WEB框架简介

发布时间:2014-08-03 来源:服务器之家

内容索引 Table of Contents 概述

FriendFeed 所使用的 Web 服务器,是一款使用 Python 编写的,相对简单的非阻塞式 Web 服务器。其应用程序所使用的 Web 框架,看起来有些像 web.py 或者是 Google 的 webapp ,但添加了一些有用的工具,并且针对非阻塞式的服务器环境作了特别优化。

Tornado 就是这个 Web 服务器,及其它在 FriendFeed 中常用工具的开源版本。 Tornado 这个框架相较于现在的主流 Web 服务器框架,包括大多数 Python 的框架,给人的感觉都很不一样,因为它的工作方式是非阻塞式的,而且它非常快。得利于其非阻塞的方式和对 epoll 的运用, Tornado 每秒可以处理 1000 个标准连接,在那些对即时性要求很高的 Web 服务应用场合来说, Tornado 无疑是一个很好的选择。我们使用它来处理 FriendFeed 中的那些即时性的功能需求——每一个活动的用户都会一直保持一个对 FriendFeed 服务器的连接。(关于如何处理成千上万的客户端的连接问题,参阅 The C10K problem )

这是经典的 Hello, world 示例:


import tornado.ioloop
import tornado.web
 class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")
 
application = tornado.web.Application([
    (r"/", MainHandler),
])
 if __name__ == "__main__":
    application.listen()
    tornado.ioloop.IOLoop.instance().start()

查看后面的 Tornado攻略 以了解更多关于 tornado.web 包的细节。

我们努力尝试整理好代码,以最大程度地降低各模块之间的相关性。所以,一般情况下,你可以在项目中独立地使用需要的模块,而不必把整个包都弄进去。

下载和安装
自动安装
Tornado 在 PyPI 的列表当中,你可以使用 pip 或者 easy_install 来自动安装它,当然,别忘了之前先把 libcurl 安装上。查看下面的 安装依赖 一节。注意一点,使用 pip 或 easy_install 安装的 Tornado 并没有包含源代码中的那些 demo 应用。
手动安装
下载 tornado-1.2.1.tar.gz 。 
tar xvzf tornado-1.2.1.tar.gz
cd tornado-1.2.1
python setup.py build
sudo python setup.py install

Tornado 的代码是托管在GitHub上。对于 Python 2.6 以上的版本,因为标准库中已经包括了对epoll 的支持,所以你可以不用安装,而只是简单地将 tornado 的目录添加到 PYTHONPATH 就可以使用了。

安装依赖

Tornado 在 Pyhton 2.5, 2.6, 2.7 当中都经过了测试。要使用 Tornado 的所有功能,你需要安装PycURL (7.18.2 或更高版本),及 simplejson (仅对 Python 2.5 需要, 2.6 开始,标准库当中已经包括了对 JSON 的支持)。 Mac OS X 及 Ubuntu 中的完整简便安装方法如下:

Mac OS X 10.6 (Python 2.6+)


sudo easy_install setuptools pycurl

Ubuntu Linux (Pyrhon 2.6+)


sudo apt-get install python-pycurl

Ubuntu Linux (Python 2.5)


sudo apt-get install python-dev python-pycurl python-simplejson

模块索引

最重要的一个模块是 web 这个 Web 框架,它包括了 Tornado 的大部分主要功能。其它的模块都是工具性质的,以便让 web 模块更好使用。查看后面的 Tornado攻略 一节了解 web 模块的使用方法。

主要模块

web – FriendFeed 使用的 Web 框架,实现了 Tornado 的大多数重要的功能。

escape – 关于 XHTML, JSON, URL 编码解码的一些方法。

database – 对 MySQLdb 的一个简单封装。

template – 基于 Python 的 web 模板系统。

httpclient – 被设计用于同 web 和 httpserver 协同工作的非阻塞式 HTTP 客户端。

auth – 第三方认证的实现(包括有 Google OpenID/OAuth, Facebook Platform, Yahoo BBAuth, FriendFeed OpenID/OAuth, Twitter OAuth)。

locale – 一套本地化、翻译机制。

options – 针对服务器环境的命令行、配置文件解析工具。

底层模块

httpserver – 服务于 web 模块的一个非常简单的 HTTP 服务器的实现。

iostream – 对非阻塞式的常用 socket 读写的简单封装。

ioloop – 核心的 I/O 循环。

其它模块

s3server – 一个 Web 服务器,实现了 Amazon S3 的大部分接口,依靠本地文件存储实现。

热点推荐