Skip to main content
 首页 » 程序教程

Python的Web服务器框架tornado简介

2016年08月18日16220

Tornado和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其非阻塞的方式和对 epoll 的运用,Tornado 每秒可以处理数以千计的连接,因此 Tornado 是实时 Web 服务的一个理想框架。我们开发这个 Web 服务器的主要目的就是为了处理 FriendFeed 的实时功能 ——在 FriendFeed 的应用里每一个活动用户都会保持着一个服务器连接。下面一起来看看Python的Web框架tornado简单入门吧。

简单示例

以下是经典的 “Hello, world”进行代码示例:

#!/usr/bin/env python
# coding:utf-8
import tornado.ioloop
import tornado.web


class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")


application = tornado.web.Application([
    (r"/index", MainHandler),
])

if __name__ == "__main__":
    application.listen(8888)
    tornado.ioloop.IOLoop.instance().start()

整个过程其实就是在创建一个socket服务端并监听8888端口,当请求到来时,根据请求中的url和请求方式(post、get或put等)来指定相应的类中的方法来处理本次请求,在上述demo中只为url为http://127.0.0.1:8888/index的请求指定了处理类MainHandler(具体如何寻找见下文)。所以,在浏览器上访问:http://127.0.0.1:8888/index,则服务器给浏览器就会返回 Hello,world ,否则返回 404: Not Found(tornado内部定义的值), 即完成一次http请求和响应。

由上述分析,我们将整个Web框架分为两大部分:

待请求阶段,即:创建服务端socket并监听端口

处理请求阶段,即:当有客户端连接时,接受请求,并根据请求的不同做出相应的响应。

模块索引

最重要的一个模块是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 循环

以上是Tornado的简单介绍,后续将更新Tornado的各种用法。

阅读延展
评论列表暂无评论
发表评论