Tornado Web Server

Tornado是一个Python Web框架和异步网络库,最初由FriendFeed开发. 通过使用非阻塞网络I / O,Tornado可以扩展到成千上万的开放连接,使其非常适合长时间轮询WebSocket和其他需要与每个用户建立长期连接的应用程序.

Hello, world

这是Tornado的一个简单的" Hello,world"示例网络应用程序:

import tornado.ioloop
import tornado.web

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

def make_app():
    return tornado.web.Application([
        (r"/", MainHandler),
    ])

if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()

本示例未使用Tornado的任何异步功能; 为此,请参阅此简单的聊天室 .

Threads and WSGI

Tornado与大多数Python Web框架不同. 它不是基于WSGI的 ,并且通常每个进程只有一个线程运行. 有关Tornado异步编程方法的更多信息,请参见用户指南 .

尽管tornado.wsgi模块中提供了WSGI的某些支持,但它并不是开发的重点,大多数应用程序应编写为直接使用Tornado自己的接口(例如tornado.web )而不是使用WSGI.

通常,Tornado代码不是线程安全的. 在Tornado中唯一可以安全地从其他线程调用的方法是IOLoop.add_callback . 您还可以使用IOLoop.run_in_executor在另一个线程上异步运行阻塞函数,但是请注意,传递给run_in_executor的函数应避免引用任何Tornado对象. 建议使用run_in_executor与阻塞代码进行交互.

Installation

pip install tornado

龙卷风列在PyPI中 ,可以与pip一起安装. 请注意,源分发包包含以这种方式安装Tornado时不存在的演示应用程序,因此您可能希望下载源tarball的副本或克隆git存储库 .

先决条件 :Tornado 5.x可以在Python 2.7和3.4+上运行(Tornado 6.0将需要Python 3.5+;不再支持Python 2). 需要对Python 2.7.9中的ssl模块进行更新(在某些发行版中,这些更新可能在较旧的python版本中可用). 除了可以通过pipsetup.py install自动安装的要求之外,以下可选软件包也可能有用:

Platforms: Tornado should run on any Unix-like platform, although for the best performance and scalability only Linux (with epoll) and BSD (with kqueue) are recommended for production deployment (even though Mac OS X is derived from BSD and supports kqueue, its networking performance is generally poor so it is recommended only for development use). Tornado will also run on Windows, although this configuration is not officially supported and is recommended only for development use. Without reworking Tornado IOLoop interface, it’s not possible to add a native Tornado Windows IOLoop implementation or leverage Windows’ IOCP support from frameworks like AsyncIO or Twisted.

Documentation

该文档还提供PDF和Epub格式 .

Discussion and support

您可以在Tornado开发人员邮件列表上讨论Tornado,并在GitHub问题跟踪器上报告错误. 可以在Tornado Wiki上找到指向其他资源的链接. 新版本在公告邮件列表中宣布 .

根据Apache许可,版本2.0可以使用Tornado.

本网站和所有文档均受Creative Commons 3.0许可.