Tornado 2.1的新功能¶
2011年9月20日¶
向后不兼容的更改¶
已取消对Tornado 1.0版之前版本所写安全cookie的支持。这个
RequestHandler.get_secure_cookie
方法不再采用include_name
参数。这个
debug
应用程序设置现在会导致在浏览器中显示未捕获异常的堆栈跟踪。由于这可能会泄漏敏感信息,因此不建议将调试模式用于面向公共的服务器。
安全修补程序¶
Diginotar已从使用的默认CA证书文件中删除
SimpleAsyncHTTPClient
.
新模块¶
tornado.gen
:一个基于生成器的接口,用于简化异步函数的编写。tornado.netutil
部分tornado.httpserver
已提取到一个新模块中,用于非HTTP协议。tornado.platform.twisted
:Tornado IOLoop和Twisted反应堆之间的桥梁,允许为Twisted编写的代码在Tornado上运行。tornado.process
:多进程模式已得到改进,现在可以重新启动崩溃的子进程。在处添加了新的入口点tornado.process.fork_processes
虽然,虽然tornado.httpserver.HTTPServer.start
仍然支持。
tornado.web
¶
tornado.web.RequestHandler.write_error
替换get_error_html
作为生成自定义错误页的首选方法 (get_error_html
仍受支持,但已弃用)在
tornado.web.Application
,处理程序可以由(完全限定)名称指定,而不是导入和传递类对象本身。现在可以使用的自定义子类
StaticFileHandler
与static_handler_class
应用程序设置,并且此子类可以重写static_url
方法。StaticFileHandler
子类现在可以重写get_cache_time
自定义缓存控件行为。tornado.web.RequestHandler.get_secure_cookie
现在有一个max_age_days
允许应用程序覆盖默认一个月到期的参数。set_cookie
现在接受max_age
关键字参数以设置max-age
cookie属性(注意下划线与短划线)tornado.web.RequestHandler.set_default_headers
可以被重写,以在错误处理期间不被重置的方式设置头。RequestHandler.add_header
现在可以用于设置响应中可以多次出现的标题。RequestHandler.flush
现在可以接受流控制的回调。这个
application/json
现在可以对内容类型进行gzip处理。现在可以作为静态函数访问cookie签名函数
tornado.web.create_signed_value
和tornado.web.decode_signed_value
.
tornado.httpserver
¶
为了方便一些高级的多流程方案,
HTTPServer
有新方法add_sockets
,和插座打开代码单独提供tornado.netutil.bind_sockets
.这个
cookies
属性现在在上可用tornado.httpserver.HTTPRequest
(在旧位置也可作为RequestHandler
)tornado.httpserver.HTTPServer.bind
现在采用一个backlog参数,其含义与socket.listen
.HTTPServer
现在可以在UNIX套接字和TCP上运行。修复了启动时出现的异常
socket.AI_ADDRCONFIG
在Windows XP上不可用
IOLoop
and IOStream
¶
IOStream
性能得到了提高,特别是对于小的同步请求。新方法
tornado.iostream.IOStream.read_until_close
和tornado.iostream.IOStream.read_until_regex
.IOStream.read_bytes
和IOStream.read_until_close
现在采取streaming_callback
参数以在接收数据时返回数据,而不是一次返回全部数据。IOLoop.add_timeout
现在接受datetime.timedelta
对象以及绝对时间戳。PeriodicCallback
由于累积误差,现在坚持到指定的时间段,而不是以后爬行。tornado.ioloop.IOLoop
和tornado.httpclient.HTTPClient
现在有close()
应该在创建和销毁许多这些对象的应用程序中使用的方法。IOLoop.install
现在可以使用ioloop的自定义子类作为singleton,而不需要猴子修补。IOStream
在出现连接错误时,应始终调用close回调而不是connect回调。这个
IOStream
当存在对缓冲数据满意的挂起读取回调时,将不再调用Close回调。
tornado.simple_httpclient
¶
现在支持客户端SSL证书
client_key
和client_cert
参数到tornado.httpclient.HTTPRequest
现在使用最大缓冲区大小,以允许读取大于100MB的文件
现在可用于不发送内容长度头的HTTP 1.0服务器
这个
allow_nonstandard_methods
HTTP客户端请求上的标志现在允许除POST
和PUT
容纳尸体。修复了中的文件描述符泄漏和多个回调调用
SimpleAsyncHTTPClient
在执行重定向时不再消耗额外的连接资源。
现在可以使用有缺陷的Web服务器,这些服务器用
\n
而不是\r\n\r\n
.现在集
response.request_time
正确地。连接超时现在工作正常。
其他模块¶
tornado.auth.OpenIdMixin
当回调URI位于不同的域上时,现在使用正确的领域。tornado.autoreload
有一个新的命令行接口,可用于包装任何脚本。这将取代--autoreload
参数tornado.testing.main
对语法错误的抵抗力更强。tornado.autoreload.watch
可用于监视导入模块源以外的文件。tornado.database.Connection
有新的变体execute
和executemany
返回受影响的行数,而不是最后插入的行ID。tornado.locale.load_translations
现在接受任何格式正确的区域设置名称,而不仅仅是预定义的LOCALE_NAMES
名单。tornado.options.define
现在需要一个group
分组选项的参数--help
输出。模板加载器现在采用
namespace
用于向模板命名空间添加项的构造函数参数。tornado.websocket
现在支持协议的最新版本(“hybi-10”)(仍然支持旧版本,“hixie-76”;自动检测正确的版本)。tornado.websocket
现在在python 3上工作
错误修复¶
Windows支持已得到改进。Windows仍然不是官方支持的平台,但是测试套件现在通过了,并且
tornado.autoreload
作品。上载名称包含特殊字符的文件现在可以工作了。
包含特殊字符的cookie值现在被正确地引用和不加引号。
现在支持多行标题。
中现在支持重复的内容长度头(可以由某些代理添加)。
HTTPServer
.Unicode字符串现在可以在模板表达式中使用。
模板
{{% module %}}
即使应用程序使用名为modules
.带有“expect:100 continue”的请求现在可以处理python 3