Tornado 4.1的新功能

2015年2月7日

集锦

  • 如果A Future 包含一个异常,但从不检查或重新引发该异常(例如,通过生成 Future )时,将记录堆栈跟踪 Future 是垃圾收集。

  • 新班级 tornado.gen.WaitIterator 提供迭代的方法 Futures 按照他们解决的顺序。

  • 这个 tornado.websocket 模块现在支持通过“permessage deflate”扩展进行压缩。重写 WebSocketHandler.get_compression_options 在服务器端启用,并使用 compression_options 关键字参数 websocket_connect 在客户端。

  • 当安装了适当的软件包时,就有可能产生 asyncio.Future 或扭曲 Defered 龙卷风中的物体。

向后兼容性说明

tornado.concurrent

  • 如果A Future 包含一个异常,但从不检查或重新引发该异常(例如,通过生成 Future )时,将记录堆栈跟踪 Future 是垃圾收集。

  • Future 现在在回调中捕获并记录异常。

tornado.curl_httpclient

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

  • tornado.curl_httpclient 现在支持在重定向方法后重新提交实体,而不是 POST .

  • curl_httpclient 现在运行IOLoop上的流式和头回调。

  • 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 使用正确的参数。此更改是向后不兼容的,会影响实现的任何应用程序 HTTPServerConnectionDelegate 以……为例 Application 而不是记录的方法签名。

  • HTTPServer 现在可以容忍额外的换行符,这些换行符有时会插入保持活动连接的请求之间。

  • HTTPServer 现在可以在请求块体后使用Keep-Alive连接。

  • HTTPServer 现在总是报告 HTTP/1.1 而不是回显请求版本。

tornado.httputil

  • 新功能 tornado.httputil.split_host_and_port 用于解析 netloc URL的一部分。

  • 这个 context 参数 HTTPServerRequest 现在是可选的,如果提供了上下文, remote_ip 属性也是可选的。

  • 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

  • 现在有可能屈服 Deferred 协程中的对象 singledispatch 类库可用 tornado.platform.twisted 已导入。

tornado.tcpclient

  • TCPClient 由于超时时间不正确,将不再引发异常。

tornado.tcpserver

  • TCPServer 不再忽略它 read_chunk_size 争论。

tornado.testing

  • AsyncTestCase 更好地支持多个异常。以前它会默默地吞下除最后一个以外的所有东西;现在它会抬起第一个,记录下其余的一切。

  • AsyncTestCase 现在打扫干净 Subprocess 状态对 tearDown 必要时。

tornado.web

tornado.websocket