What’s new in Tornado 4.3

Nov 6, 2015

Highlights

  • 支持Python 3.5中新的async / await关键字. 在大多数情况下,可以使用async def代替@gen.coroutine装饰器. 在用async def定义的函数内部,使用await而不是yield来等待异步操作. 用async / await定义的@gen.coroutine@gen.coroutineyield定义的@gen.coroutine更快,但不支持某些功能,包括Callback / Wait或产生Twisted Deferred的能力. 有关更多信息,请参见用户指南 .

  • 在旧版本的Python中使用Cython进行编译时,async / await关键字也可用.

Deprecation notice

  • 这将是Tornado的最新版本,以支持Python 2.6或3.2. 请注意,即使PyPy3实现了Python 3.2和3.3功能的混合,也将继续受到支持.

Installation

  • Tornado has several new dependencies: ordereddict on Python 2.6, singledispatch on all Python versions prior to 3.4 (This was an optional dependency in prior versions of Tornado, and is now mandatory), and backports_abc>=0.4 on all versions prior to 3.5. These dependencies will be installed automatically when installing with pip or setup.py install. These dependencies will not be required when running on Google App Engine.

  • Windows(32和64位)上的Python 3.5提供了二进制轮子.

tornado.auth

  • 新方法OAuth2Mixin.oauth2_request可用于通过访问令牌发出经过身份验证的请求.

  • 现在与用Cython编译的回调兼容.

tornado.autoreload

  • 修复了autoreload命令行包装程序中的一个问题,其中导入将被错误地解释为相对.

tornado.curl_httpclient

  • 修复了多行标题的解析.

  • allow_nonstandard_methods=True现在以与simple_httpclient相同的方式绕过身体健全性检查.

  • 现在, PATCH方法允许主体没有allow_nonstandard_methods=True .

tornado.gen

  • WaitIterator现在在Python 3.5上支持async for语句.

  • @gen.coroutine可以应用于用Cython编译的函数. 在3.5之前的python版本上,必须安装backports_abc软件包才能使用此功能.

  • 弃用Multimulti_future并由统一的函数multi代替.

tornado.httpserver

  • 同时包含Content-LengthTransfer-Encoding请求将被视为错误.

tornado.httputil

  • 现在可以对HTTPHeaders进行腌制和取消腌制.

tornado.ioloop

  • IOLoop(make_current=True)现在可以按预期运行,而不是引发异常.

  • Twisted和asyncio IOLoop实现现在可以在退出时清除current() ,就像标准IOLoops一样.

  • IOLoop.add_callback is faster in the single-threaded case.

  • IOLoop.add_callback在一个封闭的IOLoop调用时,但回调将不会被调用不再引发错误.

tornado.iostream

  • 的协同程序式使用IOStream现在大多数错误转换成StreamClosedError ,其具有与在室外应用程序的控制(特别是SSL错误)异常减少日志噪音的效果.

  • StreamClosedError现在具有real_error属性,该属性指示为什么关闭流. 它与IOStreamerror属性相同,但比IOStream本身更容易访问.

  • 改进了read_until_close错误处理.

  • 对SSL服务器进行端口扫描时,日志记录的噪音较小.

  • 现在对所有读取都处理EINTR .

tornado.locale

tornado.locks

tornado.log

  • --log_rotate_mode=time ,-- --log-rotate-whenlog-rotate-interval可以使用新的基于时间的日志轮换模式.

tornado.netutil

  • bind_sockets现在支持带有reuse_port=True参数的SO_REUSEPORT .

tornado.options

  • 短划线和下划线现在在选项名称中可以完全互换.

tornado.queues

  • Queue现在支持Python 3.5上的async for语句.

tornado.simple_httpclient

  • 跟随重定向时, streaming_callbackheader_callback将不再在重定向响应上运行(仅最终的非重定向).

  • Responses containing both Content-Length and Transfer-Encoding will be treated as an error.

tornado.template

  • 现在, tornado.template.ParseError除了行号之外还包括文件名.

  • 空格处理变得更加可配置. 现在, Loader构造函数具有一个whitespace参数,一个新的template_whitespace Application设置以及一个新的{% whitespace %}模板指令. 所有这些选项均采用在tornado.template.filter_whitespace函数中定义的模式名称. 默认模式是single ,与Tornado的早期版本具有相同的行为.

  • 现在支持非ASCII文件名.

tornado.testing

  • ExpectLog对象现在具有boolean logged_stack属性,可以更轻松地测试是否记录了异常堆栈跟踪.

tornado.web

  • 每个输出标头的4000个字节的硬限制已被删除.

  • 对于带有.gz.bz2.xz扩展名的文件, StaticFileHandler返回正确的Content-Type .

  • 小于1000字节的响应将不再被压缩.

  • 现在,默认的gzip压缩级别为6(原为9).

  • 修复了Tornado 4.2.1中的回归,该回归使用/path破坏了StaticFileHandler .

  • 现在可以使用copy模块copy tornado.web.HTTPError .

  • 现在, Finish异常接受一个参数,该参数将传递给RequestHandler.finish方法.

  • 新的Application设置xsrf_cookie_kwargs可用于设置XSRF cookie上的其他属性,例如securehttponly .

  • Application.listen现在返回它创建的HTTPServer .

tornado.websocket

  • 修复了启用压缩时对连续帧的处理.