tornado源码分析1

引言

Tornado是FriendFeed最早使用的一款由python编写的轻量级、无阻塞式Web服务器,还包括一些相关的工具和优化。现已由Facebook开源在github。得益于无阻塞IO和epoll(or kqueue in FreeBSD, Mac OS X)的使用,Tornado每秒可以处理大量/数千的客户端连接,适用于实时的Web服务(详细可以参阅The C10K problem)。

接下来几篇文章将会从Web服务器框架设计、代码实现细节等角度介绍我对Tornado源码的分析。这篇文章作为概述,首先介绍Tornado的模块按功能分类,同时提供后续文章的结构目录。

Tornado模块分类

  • Core web framework

    • tornado.web — 包含web框架的大部分主要功能,包含RequestHandler和Application两个重要的类
    • tornado.httpserver — 一个无阻塞HTTP服务器的实现
    • tornado.template — 模版系统
    • tornado.escape — HTML,JSON,URLs等的编码解码和一些字符串操作
    • tornado.locale — 国际化支持
  • Asynchronous networking 底层模块

    • tornado.ioloop — 核心的I/O循环
    • tornado.iostream — 对非阻塞式的 socket 的简单封装,以方便常用读写操作
    • tornado.httpclient — 一个无阻塞的HTTP服务器实现
    • tornado.netutil — 一些网络应用的实现,主要实现TCPServer类
  • Integration with other services

    • tornado.auth — 使用OpenId和OAuth进行第三方登录
    • tornado.database — 简单的MySQL服务端封装
    • tornado.platform.twisted — 在Tornado上运行为Twisted实现的代码
    • tornado.websocket — 实现和浏览器的双向通信
    • tornado.wsgi — 与其他python网络框架/服务器的相互操作
  • Utilities

    • tornado.autoreload — 生产环境中自动检查代码更新
    • tornado.gen — 一个基于生成器的接口,使用该模块保证代码异步运行
    • tornado.httputil — 分析HTTP请求内容
    • tornado.options — 解析终端参数
    • tornado.process — 多进程实现的封装
    • tornado.stack_context — 用于异步环境中对回调函数的上下文保存、异常处理
    • tornado.testing — 单元测试

系列文章结构

  1. 概述
  2. Tornado HTTP服务器介绍
  3. I/O核心调度模块IOLoop
  4. 读写缓冲模块IOStream
  5. 核心web框架介绍
  6. 未完待续

参考

Tornado Documentation, Tornado Documentation CN