What’s new in Tornado 2.2

Jan 30, 2012

Highlights

  • 更新和扩展了WebSocket支持.

  • 改善了Twisted / Tornado桥的兼容性.

  • 现在,模板错误会生成更好的堆栈跟踪.

  • tornado.gen更好的异常处理.

Security fixes

  • 现在,在所有情况下, tornado.simple_httpclient禁用SSLv2. 如果将Python解释器链接到OpenSSL的1.0之前版本,则以前允许使用SSLv2.

Backwards-incompatible changes

  • 现在,如果所有子进程都干净退出而不是返回Nonetornado.process.fork_processes会引发SystemExit . 旧的行为令人惊讶,并且与该函数的大多数文档示例(未检查返回值)不一致.

  • 在Python 2.6上, tornado.simple_httpclient仅支持SSLv3. 这是因为Python 2.6在不支持不安全的SSLv2的情况下并未公开支持SSLv3和TLSv1的方法.

  • tornado.websocket no longer supports the older “draft 76” version of the websocket protocol by default, although this version can be enabled by overriding tornado.websocket.WebSocketHandler.allow_draft76.

tornado.httpclient

  • SimpleAsyncHTTPClient不再挂在HEAD请求,没有内容的响应或空的POST / PUT响应主体上.

  • SimpleAsyncHTTPClient现在支持303和307重定向代码.

  • tornado.curl_httpclient现在接受非整数超时.

  • tornado.curl_httpclient现在支持带有空密码的基本身份验证.

tornado.httpserver

  • 带有xheaders=True HTTPServer将不再接受看起来不像有效IP地址的X-Real-IP标头.

  • 现在, HTTPServerConnection请求标头视为不区分大小写.

tornado.ioloop and tornado.iostream

  • 给定一个空字符串时, IOStream.write现在可以正常工作.

  • 现在,当存在大量缓冲数据时, IOStream.read_until (和read_until_regex )的性能会更好,这SimpleAsyncHTTPClient在下载具有大量块的文件时提高SimpleAsyncHTTPClient的SimpleAsyncHTTPClient .

  • ssl_version设置为SSLv23以外的其他值时, SSLIOStream现在可以正常工作.

  • 空闲的IOLoops不再IOLoops唤醒几次.

  • 当停止并重复启动时, tornado.ioloop.PeriodicCallback不再触发重复的回调.

tornado.template

  • 模板代码中的异常现在将显示更好的堆栈跟踪,这些跟踪可以引用原始模板文件中的行.

  • {##}现在可以用于注释(与旧的{% comment %}指令不同,它们可以包装其他模板指令).

  • 模板指令现在可以跨越多行.

tornado.web

tornado.websocket

  • 已更新,以支持该协议的最新版本,该版本已在RFC 6455中完成.

  • 在所有受支持的协议版本中修复了许多错误.

  • 尽管可以通过重写tornado.websocket.WebSocketHandler.allow_draft76启用该版本,但tornado.websocket不再默认支持较旧的tornado.websocket协议"草稿76"版本.

  • WebSocketHandler.write_message现在接受一个binary参数来发送二进制消息.

  • 现在支持子Sec-WebSocket-Protocol (即Sec-WebSocket-Protocol标头). 有关详细信息,请参见WebSocketHandler.select_subprotocol方法.

  • .WebSocketHandler.get_websocket_scheme未正确设置HTTPRequest.protocol则可以使用.WebSocketHandler.get_websocket_scheme选择适当的url方案( ws://wss:// ).

Other modules

  • 现在, tornado.auth.TwitterMixin.authenticate_redirect采用callback_uri参数.

  • 现在, tornado.auth.TwitterMixin.twitter_request接受URL和部分路径(完整的URL对于遵循不同模式的搜索API很有用).

  • tornado.gen异常处理已得到改进. 现在可以捕获Task引发的异常.

  • getaddrinfo返回重复的地址时, tornado.netutil.bind_sockets现在可以工作.

  • tornado.platform.twisted兼容性已得到明显改善. 除11.0.0之外,现在还支持Twisted版本11.1.0.

  • 即使未实现tornado.process.fork_processes正确地重新设置random模块的os.urandom .

  • tornado.testing.main支持一个新的标志--exception_on_interrupt ,可以将其设置为false,以使Ctrl-C更可靠地tornado.testing.main该进程(这样做时会牺牲堆栈跟踪).

  • 现在, tornado.version_info是一个四元组,因此可以将正式版本与开发分支区分开.