一、Tornado框架概述

  Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本。这个 Web 框架看起来有些像 web.py 或者 Google 的 webapp,不过为了能有效利用非阻塞式服务器环境,这个 Web 框架还包含了一些相关的有用工具 和优化。

  Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其 非阻塞的方式和对 epoll 的运用,Tornado 每秒可以处理数以千计的连接,这意味着对于实时 Web 服务来说,Tornado 是一个理想的 Web 框架。我们开发这个 Web 服务器的主要目的是为了处理 FriendFeed 的实时功能 ——在 FriendFeed 的应用里每一个活动用户都会保持着一个服务器连接。(关于如何扩容 服务器,以处理数以千计的客户端的连接的问题,请参阅 C10K problem。)

  二、HelloWorld

  上述代码在浏览器中打印一行字符串(Hello, world!)。

  Tornado框架自身实现了一个HTTP Server,因此不需要额外的Web Server,只需要运行Python脚本即可启动整个应用。

  在Tornado框架中,一个URI对应一个RequestHandler,每一个Handler负责处理该URI的HTTP请求,GET、 POST、HEAD等HTTP方法对应Handler的get()、post()、head()等方法,HTTP请求的处理逻辑在相应的方法内实现。 Handler可以看做是Tornado框架里的Controller。

  RequestHandler的write()方法,将字符串写入Response;render()方法将模板文件写入Response。

  三、HelloWorld的进一步扩充

  define()函数为脚本扩展命令行参数。脚本启动时的参数可以通过python –help命令查看:

  port参数是自定义的启动参数,其它参数均为框架自带的默认启动参数。

  使用启动参数的方法如下:

  四、静态页面的处理