Skip to main content

Tornado 2.1中的新功能

2011年9月20日

向后不兼容的更改

  • 支持由1.0版本的Tornado编写的安全cookie已被删除。 RequestHandler.get_secure_cookie 方法不再需要 include_name 参数。

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

安全修复

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

新模块

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属性(注意下划线vs短线)

  • tornado.web.RequestHandler.set_default_headers 可能被覆盖以在错误处理期间不会被重置的方式设置头。

  • RequestHandler.add_header 现在可以用来设置一个标题,可以在响应中出现多次。

  • RequestHandler.flush 现在可以采取回调流控制。

  • 现在可以gzip压缩 application/json 内容类型。

  • 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 现在采用与 socket.listen 意义相同的积压参数。

  • HTTPServer 现在可以在unix套接字和TCP上运行。

  • 修复了当 socket.AI_ADDRCONFIG 不可用时在启动时的异常,如在Windows XP上

IOLoopIOStream

  • 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 关闭回调。

tornado.simple_httpclient

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

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

  • 现在可以与不发送Content-Length头的HTTP 1.0服务器配合使用

  • HTTP客户端请求上的 allow_nonstandard_methods 标志现在允许除 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.Connectionexecuteexecutemany 的新变体,返回受影响的行数,而不是最后插入的行ID。

  • tornado.locale.load_translations 现在接受任何正确格式的区域设置名称,而不仅仅是预定义的 LOCALE_NAMES 列表中的那些。

  • tornado.options.define 现在采用 group 参数对 --help 输出中的选项进行分组。

  • 模板加载器现在采用 namespace 构造函数参数向模板命名空间中添加条目。

  • tornado.websocket 现在支持最新(“hybi-10”)版本的协议(旧版本,“hixie-76”仍然支持;正确的版本被自动检测)。

  • tornado.websocket 现在工作在Python 3

Bug修复

  • Windows支持已得到改进。 Windows仍然不是一个官方支持的平台,但测试套件现在通过,tornado.autoreload 工作。

  • 上传包含特殊字符的文件现在可以正常工作。

  • 包含特殊字符的Cookie值现在正确引用和不引用。

  • 现在支持多行标题。

  • 现在在 HTTPServer 中支持重复的Content-Length头(可以由某些代理添加)。

  • Unicode字符串字面值现在可以在模板表达式中使用。

  • 即使应用程序使用名为 modules 的模板变量,模板 {% module %} 指令也可以工作。

  • 请求与“期望:100继续”现在工作在Python 3