Tornado 2.1的新功能

2011年9月20日

向后不兼容的更改

  • 已取消对Tornado 1.0版之前版本所写安全cookie的支持。这个 RequestHandler.get_secure_cookie 方法不再采用 include_name 参数。

  • 这个 debug 应用程序设置现在会导致在浏览器中显示未捕获异常的堆栈跟踪。由于这可能会泄漏敏感信息,因此不建议将调试模式用于面向公共的服务器。

安全修补程序

  • Diginotar已从使用的默认CA证书文件中删除 SimpleAsyncHTTPClient .

新模块

tornado.web

  • tornado.web.RequestHandler.write_error 替换 get_error_html 作为生成自定义错误页的首选方法 (get_error_html 仍受支持,但已弃用)

  • tornado.web.Application ,处理程序可以由(完全限定)名称指定,而不是导入和传递类对象本身。

  • 现在可以使用的自定义子类 StaticFileHandlerstatic_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_valuetornado.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_closetornado.iostream.IOStream.read_until_regex .

  • IOStream.read_bytesIOStream.read_until_close 现在采取 streaming_callback 参数以在接收数据时返回数据,而不是一次返回全部数据。

  • IOLoop.add_timeout 现在接受 datetime.timedelta 对象以及绝对时间戳。

  • PeriodicCallback 由于累积误差,现在坚持到指定的时间段,而不是以后爬行。

  • tornado.ioloop.IOLooptornado.httpclient.HTTPClient 现在有 close() 应该在创建和销毁许多这些对象的应用程序中使用的方法。

  • IOLoop.install 现在可以使用ioloop的自定义子类作为singleton,而不需要猴子修补。

  • IOStream 在出现连接错误时,应始终调用close回调而不是connect回调。

  • 这个 IOStream 当存在对缓冲数据满意的挂起读取回调时,将不再调用Close回调。

tornado.simple_httpclient

  • 现在支持客户端SSL证书 client_keyclient_cert 参数到 tornado.httpclient.HTTPRequest

  • 现在使用最大缓冲区大小,以允许读取大于100MB的文件

  • 现在可用于不发送内容长度头的HTTP 1.0服务器

  • 这个 allow_nonstandard_methods HTTP客户端请求上的标志现在允许除 POSTPUT 容纳尸体。

  • 修复了中的文件描述符泄漏和多个回调调用 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 有新的变体 executeexecutemany 返回受影响的行数,而不是最后插入的行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