Tornado是一个Python Web框架和异步网络库,最初是在FriendFeed开发的。通过使用非阻塞网络I / O,Tornado可以扩展到数以万计的开放连接,非常适合 长时间轮询, WebSockets和其他需要与每个用户建立长期连接的应用程序。
Tornado可以大致分为四个主要部分:
1. 一个Web框架(包括RequestHandler它的子类创建Web应用程序和各种支持类)。
2. HTTP(HTTPServer和 AsyncHTTPClient)的客户端和服务器端实现。
3. 异步网络库包括类IOLoop 和IOStream,其充当用于HTTP组件的构建块,并且还可以用于实现其它协议。
4.一个协程库(tornado.gen)允许异步代码以比链接回调更直接的方式编写。
Tornado Web框架和HTTP服务器一起提供WSGI的全栈替代方案。尽管可以在WSGI容器中使用Tornado Web框架(WSGIAdapter),或者将Tornado HTTP服务器用作其他WSGI框架(WSGIContainer)的容器,tornado.wsgi模块中也提供了对WSGI的一些支持,但每种组合都有其局限性,并且需要充分利用Tornado一起使用Tornado的Web框架和HTTP服务器,应该编写大多数应用程序来直接使用Tornado自己的接口而不是使用WSGI。(这是官方的推荐~)
一般来说,Tornado代码不是线程安全的。Tornado中唯一可以安全地从其他线程调用的方法是IOLoop.add_callback。也可以使用IOLoop.run_in_executor异步运行另一个线程上的阻塞函数,但请注意传递给它的函数run_in_executor应该避免引用任何Tornado对象。
下面是一些模块介绍:
Web framework:
- tornado.web — RequestHandler and Application classes
- tornado.template - 模板
- tornado.routing - 基本路由实现
- tornado.escape - 转义和字符串操作
- tornado.locale - 国际化支持
- tornado.websocket - 与浏览器的双向通信socket
- tornado.httpserver - 非阻塞HTTP服务器
- tornado.httpclient - 异步HTTP客户端
- tornado.httputil - 操纵HTTP头和URL
- tornado.http1connection - HTTP / 1.x客户端/服务器实现
- tornado.ioloop -主事件循环
- tornado.iostream - Flexible output generation(灵活的输出生成~不知道该怎么翻译好)
- tornado.netutil - 操作HTTP报头和URL的工具类
- tornado.tcpclient- IOStream连接工厂
- tornado.tcpserver- IOStream基于TCP的服务器
协程和并发
- tornado.gen - 基于发生器的协程
- tornado.locks - 同步原语
- tornado.queues - 协程队列
- tornado.process - 用于多个进程的实用程序
与其他服务集成
- tornado.auth - 使用OpenID和OAuth进行第三方登录
- tornado.wsgi - 与其他Python框架和Web服务器的网关接口
- tornado.platform.caresresolver - 使用C-Ares的异步DNS解析器
- tornado.platform.twisted - twisted和tornado之间的桥梁
- tornado.platform.asyncio- asyncio和tornado之间的桥梁
Utilities
- tornado.autoreload - 自动检测开发中的代码更改
- tornado.concurrent- Work with
Future
objects - tornado.log - 打印日志的
- tornado.options - 命令行解析
- tornado.stack_context - 跨异步回调的异常处理
- tornado.testing - 对异步代码的单元测试支持
- tornado.util - 通用工具类