翻译:Tornado官方文档Navigation

翻译:Tornado官方文档导航页

  • Quick links
  • Hello,world
  • 线程和WSGI
  • 异步集成
  • 安装
  • 文档
    • 用户指南
    • Web 框架
    • HTTP服务端和客户端
    • 异步网络
    • 协程与并发
    • 与其他服务集成
    • 公共事务

Tornado是一个Python web框架,同时也是一个异步网络库,最初开发于FriendFeed。通过非阻塞网络I/O,Tornado的规模可以达到万级开发式连接,使其成为那些要求与用户建立长期连接的长轮询,WebSockets,和其他应用程序的理想web框架。


Quick links

  • 目前版本:6.0.2(PyPI下载地址)
  • 代码源(GitHub)
  • 邮件列表:讨论和公告
  • Stack Overflow
  • WiKi

Hello,world

这是使用Tornado实现的一个‘Hello,world’简单web app代码示例:

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任何的异步特性,关于这一点,先了解更多,可以点击查看这个demo: 简单聊天室


线程和WSGI

与大多数的Python web框架不同,Tornado不是基于WSGI,通常每个进程只跑一个线程。有关Tornado异步编程方法的更多信息,请点击【用户指南】了解更多信息。

虽然在tornado.wsgi模块中提供了对wsgi的一些支持,但它不是开发的重点,大多数应用程序应该直接使用tornado自己的接口(如tornado.web)而不是使用WSGI。

总的来说,Tornado的代码是非线程安全的。唯一可以安全的从其他线程调用的方法是IOLoop.add_callback,你也可以在执行器中使用IOLoop.run_in_executor从另一个线程上异步运行阻塞函数,但需要注意的是传递给 run_in_executor的函数应当避免引用任何Tornado对象。 run_in_executor方法被推荐用来与阻塞代码交互


异步集成

Tornado是与标准库asyncio模块集成,并共享相同的事件循环(自Tornado 5.0开始就作为默认特性)。总的来说,那些设计出来和asyncio一起使用的库可以与Tornado自由组合。


安装

pip install tornado

Tornado在PyPI中列出,可以使用pip进行安装。注意:使用pip安装的Tornado将不包括源发行版以及demo应用,所以你可以下载源副本,也可以克隆git仓库

前提: Tornado 6.0要求Python 3.5.2及以上版本(如果需要和python2.7兼容,请查看Tornado 5.1)下面的一些配件包也许可以帮到你:

  • pycurl:被配件包tornado.curl_httpclient使用。Libcurl的版本要求7.22及以上。
  • Twisted:tornado.platform.twisted类需要与其一起使用。
  • pycares:是一个可选的非阻塞DNS解析器,当线程不适配的时候可以使用。

平台: Tornado应该在Unix类平台上运行,尽管为了获得最佳性能和可拓展性只有Linux(带epoll)和BSD(带kqueue)被建议用来生产部署(虽然Mac OS X派生于BSD并支撑kqueue,但其网络性能通常较差,所以Mac只建议用来开发使用)。Tornado也可以跑在windows上,虽然该配置不是官方支持,但也可以用来开发使用。如果不修改Tornado IOLoop接口,就不可能添加本地Tornado Windows IOLoop实现,以及Twisted和Asyncio等框架提供的Windows IOCP支持。


文档

该文档也支持PDF和Epub格式,点击跳转下载页面


用户指南

  • 介绍
  • 异步和非阻塞I/O
  • 协调程序
  • 队列示例-web爬虫
  • Tornado Web应用程序的结构
  • 模板和UI
  • 身份验证和安全性
  • 运行和部署

Web 框架

  • tornado.web—请求处理程序和应用程序类
  • tornado.template—灵活的输出生成
  • tornado.routing—基本路由实现
  • tornado.escape—Escaping以及字符操作
  • tornado.locale—国际化支持
  • tornado.websocket—与浏览器双向通信

HTTP服务端和客户端

  • tornado.httpserver—非阻塞HTTP服务端
  • tornado.httpclient—异步客户端
  • tornado.httputil—操作HTTP头和URLs
  • tornado.http1connection—HTTP/1.x client/server实现

异步网络

  • tornado.ioloop—主事件循环
  • tornado.iostream—对 非阻塞套接字的简易包装
  • tornado.netutil—多样的网络utilities
  • tornado.tcpclient—IO流连接工厂
  • tornado.tcpserver—基于IO流的基本TCO服务端

协程与并发

  • tornado.gen—基于生产者的协程
  • tornado.locks—同步基类
  • tornado.queues—协同队列
  • tornado.process—多进程事务

与其他服务集成

  • tornado.auth—使用OpenID和OAuth登陆的三方
  • tornado.wsgi—与其他Python框架和服务的互用
  • tornado.platform.caresresolver—使用C-Ares的异步DNS解析器
  • tornado.platform.twisted—桥接Twisted和Tornado
  • tornado.platform.asyncio—桥接asyncio和Tornado

公共事务

  • tornado.autoreload—自动化检查开发分支代码的变化
  • tornado.concurrent—与Future对象一起使用
  • tornado.log—日志支持
  • tornado.options—命令行解析
  • tornado.testing—单元测试支持异步代码
  • tornado.util—一般用途设备

你可能感兴趣的:(文献翻译)