Skip to main content

Tornado 3.2中的新功能

2014年1月14日

安装

  • Tornado现在取决于在Python 2上运行时的 backports.ssl_match_hostname。这将在使用 pipeasy_install 时自动安装

  • Tornado现在包括一个可选的C扩展模块,大大提高了websockets的性能。如果在安装时找到C编译器,将自动构建此扩展。

新模块

  • tornado.platform.asyncio 模块提供与在3.4中引入的 asyncio 模块的集成(也可用于带有 pip install asyncio 的Python 3.3)。

tornado.auth

  • 使用OAuth 2(而不是OpenID和OAuth 1)为Google服务添加了 GoogleOAuth2Mixin 支持身份验证。

  • FacebookGraphMixin 已更新,以使用当前的Facebook登录URL,这将保存重定向。

tornado.concurrent

  • TracebackFuture 现在接受 timeout 关键字参数(虽然在非阻塞代码中使用非零超时仍然不正确)。

tornado.curl_httpclient

  • tornado.curl_httpclient 现在可以在Python 3上使用即将发布的pycurl 7.19.3,它将首次正式支持Python 3。注意,有一些非官方的Python 3端口的pycurl(Ubuntu已经包括一个为其过去的几个版本);这些不支持与Tornado配合使用。

tornado.escape

tornado.gen

  • 协同程序现在可以生成除了列表之外的命令,以并行等待多个任务。

  • 提高 tornado.gen 在生产已经完成的 Future 时的性能。

tornado.httpclient

  • tornado.httpclient.HTTPRequest 现在使用属性设置,以便在构造之后设置属性应用与 __init__ 相同的转换(例如将主体属性转换为字节)。

tornado.httpserver

  • 格式错误的 x-www-form-urlencoded 请求主体现在将记录警告并继续,而不是导致请求失败(类似于现有的处理格式错误的 multipart/form-data 主体)。这主要是因为一些库默认发送此内容类型,即使数据不是格式,编码。

  • 修复一些错误信息为unix套接字(和其他非IP套接字)

tornado.ioloop

  • IOLoop 现在一致地使用 handle_callback_exception 进行错误记录。

  • IOLoop 现在可以提前释放回调对象,从而减少空闲时的内存使用。

  • 如果存在为根记录器或 tornadotornado.application 记录器定义的处理程序(以前仅查看根记录器),IOLoop 将不再调用 logging.basicConfig

tornado.iostream

  • IOStream 现在可以在更多地方识别 ECONNABORTED 错误代码(这主要是在Windows上的问题)。

  • 如果在写缓冲区中有数据的情况下关闭连接,IOStream 现在可以更早释放内存。

  • PipeIOStream 现在可以正确处理 EAGAIN 错误代码。

  • SSLIOStream 现在自动启动SSL握手,而不必等待应用程序尝试读取或写入连接。

  • 当连接已重置时,从 set_nodelay 吞入虚假异常。

tornado.locale

tornado.log

tornado.netutil

  • is_valid_ip (和 HTTPRequest.remote_ip)现在拒绝空字符串。

  • 在导入时间同步使用 ThreadedResolver 来解析unicode主机名不再是死锁。

tornado.platform.twisted

tornado.process

tornado.simple_httpclient

  • simple_httpclient 现在将 connect_timeout 应用于已排队但尚未启动的请求。

  • 在Python 2.6中,simple_httpclient 现在使用TLSv1而不是SSLv3。

  • simple_httpclient 现在在DNS解析期间强制执行连接超时。

  • 嵌入的 ca-certificates.crt 文件已使用当前的Mozilla CA列表更新。

tornado.web

  • 如果客户端请求的 Range 大于整个文件(Facebook具有执行此操作的搜寻器),则 StaticFileHandler 不再失败。

  • RequestHandler.on_connection_close 现在可以在保持连接的后续请求上正确工作。

  • 新应用程序设置 default_handler_class 可用于轻松设置自定义404页面。

  • 新应用程序设置 autoreloadcompiled_template_cachestatic_hash_cacheserve_traceback 可用于控制调试模式的各个方面。

  • 新方法 RequestHandler.get_query_argumentRequestHandler.get_body_argument 以及新属性 HTTPRequest.query_argumentsHTTPRequest.body_arguments 允许访问参数,而不与来自请求主体的查询字符串混合。

  • 当参数不能被解码时,RequestHandler.decode_argument 和相关方法现在提出 HTTPError(400) 而不是 UnicodeDecodeError

  • RequestHandler.clear_all_cookies 现在接受 domainpath 参数,就像 clear_cookie

  • 现在可以在使用 URLSpec 类时通过名称指定处理程序。

  • Application 现在接受4元组来指定 name 参数(之前需要构造 URLSpec 对象而不是元组)。

  • 修复了处理程序方法返回非None或Future之外的值时出现的错误消息。

  • 当使用 @asynchronous@gen.coroutine 时,异常将不再记录两次

tornado.websocket

tornado.wsgi

  • WSGIContainer 现在调用iterable的 close() 方法,即使出现错误,符合规范。