欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  程序教程

Python的Web服务器框架tornado简介

程序员文章站 2021-12-12 19:27:40
...

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的各种用法。