What’s new in Tornado 4.1

Feb 7, 2015

Highlights

Backwards-compatibility notes

tornado.concurrent

  • 如果Future包含异常,但从未检查或重新引发该异常(例如,通过产生Future ),则在对Future进行垃圾回收时将记录堆栈跟踪.

  • 现在, Future在其回调中捕获并记录异常.

tornado.curl_httpclient

  • tornado.curl_httpclient现在支持PATCH和自定义方法的请求主体.

  • tornado.curl_httpclient现在支持对除POST以外的方法进行重定向后重新提交正文.

  • curl_httpclient现在在curl_httpclient运行流和标头回调.

  • 现在, tornado.curl_httpclient使用其自己的记录器进行调试输出,因此可以更轻松地对其进行过滤.

tornado.gen

  • 新类tornado.gen.WaitIterator提供了一种以Futures的解析顺序进行迭代的方法.

  • singledispatch库可用时(Python 3.4上的标准,在较旧版本上可以通过pip install singledispatch获得), convert_yielded函数可用于使其他种类的对象在协程中可屈服.

  • 新功能tornado.gen.sleep是协程型模拟到time.sleep .

  • gen.engine现在可以正确捕获其回调的堆栈上下文.

tornado.httpclient

tornado.httpserver

  • HTTPServer现在使用正确的参数调用start_request . 此更改是向后不兼容的,通过遵循Application的示例而不是记录的方法签名,会影响实现HTTPServerConnectionDelegate的所有应用程序.

  • HTTPServer现在可以容忍多余的换行符,有时在保持活动连接的请求之间插入换行符.

  • HTTPServer现在可以在带有分块正文的请求之后使用保持活动连接.

  • 现在, HTTPServer始终报告HTTP/1.1而不回显请求版本.

tornado.httputil

  • 新函数tornado.httputil.split_host_and_port用于解析URL的netloc部分.

  • The context argument to HTTPServerRequest is now optional, and if a context is supplied the remote_ip attribute is also optional.

  • HTTPServerRequest.body现在始终是一个字节字符串(以前,默认的空正文将是python 3上的unicode字符串).

  • 现在,当出现类似换行符的unicode字符时,标题解析就可以正常工作.

  • 标头解析再次支持CRLF和裸LF行分隔符.

  • 格式错误的multipart/form-data主体将始终安静地记录下来,而不是引发未处理的异常; 以前,行为是不一致的,具体取决于确切的错误.

tornado.ioloop

  • 现在, kqueueselect IOLoop实现正确报告了可写性,从而修复了IOStream中的流控制.

  • 创建新的IOLoop ,如果当前实例尚未存在,它将自动成为线程的"当前".

  • 可以使用新方法PeriodicCallback.is_running查看PeriodicCallback是否已启动.

tornado.iostream

  • IOStream.start_tls现在使用server_hostname参数进行证书验证.

  • 在某些错误情况之后, SSLIOStream将不再消耗100%的CPU.

  • SSLIOStream不再在握手期间记录EBADF错误,因为它们可能是由某些模式下的nmap扫描引起的.

tornado.options

tornado.platform.asyncio

tornado.platform.twisted

  • 现在,当singledispatch库可用并且已导入tornado.platform.twisted时,可以在协程中产生Deferred对象.

tornado.tcpclient

  • 由于超时TCPClient将不再引发异常.

tornado.tcpserver

  • TCPServer不再忽略其read_chunk_size参数.

tornado.testing

  • AsyncTestCase对多个异常有更好的支持. 以前它会默默地吞噬除最后一个以外的所有内容; 现在它引发第一个,并记录所有其余的.

  • 现在, AsyncTestCase在必要时清除tearDown上的Subprocess状态.

tornado.web

tornado.websocket