Tornado Web Server

Tornado 是一个Python的Web框架和异步网络库,是由 FriendFeed 开发的。 得益于无阻塞网络输入输出的使用,Tornado可以实现数以万计的活动连接的规模,适合于 长轮巡 long polling, WebSockets, 其他程序则需要保持每一个用户的long-lived链接。

Hello, world

下面是一个简单的Tornado “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(8888)
    tornado.ioloop.IOLoop.instance().start()

这个示例没有用到Tornado任何的异步特性;可以查看 simple chat room.

安装

自动安装:

pip install tornado

Tornado 已经发布到 PyPI 所以可以通过 pip or easy_install 进行安装。

请注意,源码发布版本包括了示例程序,使用以上方式安装则不包含, 所以,出于学习目的,最好直接下载源码发布版本。

手动安装: 下载 tornado-4.5.1.tar.gz:

tar xvzf tornado-4.5.1.tar.gz
cd tornado-4.5.1
python setup.py build
sudo python setup.py install

Tornado的源码托管于 GitHub.

先决条件: Tornado 运行于 Python 2.6, 2.7, 3.2, 和 3.3 版本. 除了Python的标准库以后,没有其他严格的要求;但是一些特性需要以下的几个库:

  • 需要 unittest2 来运行Tornado的测试(Python2.6) 在新版本的Python中已经不需要了。
  • concurrent.futures 在使用 ThreadedResolver 时,它是推荐的线程池。 仅仅在Python2版本中需要,Python3已经将其包含在了标准库中。
  • pycurl 用于 tornado.curl_httpclient. 需求Libcurl 7.18.2 以上版本 推荐Libcurl 7.21.1 版本
  • 需求 Twisted 如果需要使用 tornado.platform.twisted.
  • pycares 是一个可选的非阻塞DNS解析器
  • Monotime adds support for a monotonic clock, which improves reliability in environments where clock adjustments are frequent. No longer needed in Python 3.3.

平台: Tornado需要运行于类Unix平台,推荐Linux平台( epoll )或BSD ( kqueue ) (虽然 Mac OS X 是BSD的衍生版本,而且它也支持kqueue,但是它的网络性能太差,仅仅推荐开发时使用。)

讨论及支持

谷歌讨论组 the Tornado developer mailing list, BUG提交 GitHub issue tracker, 资源链接 Tornado wiki

Tornado 是一个 Facebook 的开源技术。 它的发布遵循 Apache License, Version 2.0 协议。