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异步编程方法的更多信息,请参见用户指南 .

While some support of WSGI is available in the tornado.wsgi module, it is not a focus of development and most applications should be written to use Tornado’s own interfaces (such as tornado.web) directly instead of using WSGI.

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

asyncio Integration

Tornado与标准库asyncio模块集成在一起,并共享相同的事件循环(自Tornado 5.0起默认为事件循环). 通常,设计用于asyncio库可以与Tornado自由混合.

Installation

pip install tornado

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

先决条件 :Tornado 6.0需要Python 3.5.2或更高版本(如果需要与Python 2.7兼容,请参阅Tornado 5.1 ). 以下可选软件包可能会有用:

平台 :Tornado应该可以在任何类似Unix的平台上运行,尽管为了获得最佳性能和可伸缩性,建议仅将Linux(带有epoll )和BSD(带有kqueue )用于生产部署(即使Mac OS X源自BSD并支持kqueue,其网络性能通常很差,因此建议仅用于开发用途). Tornado也将在Windows上运行,尽管此配置不受官方支持,建议仅用于开发用途. 如果不重新设计Tornado IOLoop接口,就无法添加本机Tornado Windows IOLoop实现,也无法利用AsyncIO或Twisted等框架的Windows IOCP支持.

在Windows上,Tornado需要WindowsSelectorEventLoop . 这是Python 3.7和更早版本中的默认值,但Python 3.8默认为与Tornado不兼容的事件循环. 在具有Python 3.8的Windows上使用Tornado的应用程序必须在其main文件/函数的开头调用asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) .

Documentation

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

Discussion and support

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

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

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