Tornado 4.3 新特性¶

Nov 6, 2015¶

Highlights¶

  • The new async/await keywords in Python 3.5 are supported. In most cases,async def can be used in place of the @gen.coroutine decorator.Inside a function defined with async def, use await instead ofyield to wait on an asynchronous operation. Coroutines defined withasync/await will be faster than those defined with @gen.coroutine andyield, but do not support some features including Callback/Wait orthe ability to yield a Twisted Deferred. See the users’guide for more.
  • The async/await keywords are also available when compiling with Cython inolder versions of Python.

Deprecation notice¶

  • This will be the last release of Tornado to support Python 2.6 or 3.2.Note that PyPy3 will continue to be supported even though it implementsa mix of Python 3.2 and 3.3 features.

Installation¶

  • Tornado has several new dependencies: ordereddict on Python 2.6,singledispatch on all Python versions prior to 3.4 (This was anoptional dependency in prior versions of Tornado, and is nowmandatory), and backports_abc>=0.4 on all versions prior to3.5. These dependencies will be installed automatically when installingwith pip or setup.py install. These dependencies will notbe required when running on Google App Engine.
  • Binary wheels are provided for Python 3.5 on Windows (32 and 64 bit).

tornado.auth¶

  • New method OAuth2Mixin.oauth2_request can be used to make authenticatedrequests with an access token.
  • Now compatible with callbacks that have been compiled with Cython.

tornado.autoreload¶

  • Fixed an issue with the autoreload command-line wrapper in whichimports would be incorrectly interpreted as relative.

tornado.curl_httpclient¶

  • Fixed parsing of multi-line headers.
  • allow_nonstandard_methods=True now bypasses body sanity checks,in the same way as in simple_httpclient.
  • The PATCH method now allows a body withoutallow_nonstandard_methods=True.

tornado.gen¶

  • WaitIterator now supports the async for statement on Python 3.5.
  • @gen.coroutine can be applied to functions compiled with Cython.On python versions prior to 3.5, the backports_abc package mustbe installed for this functionality.
  • Multi and multi_future are deprecated and replaced bya unified function multi.

tornado.httpclient¶

tornado.httpserver¶

  • Requests containing both Content-Length and Transfer-Encodingwill be treated as an error.

tornado.httputil¶

tornado.ioloop¶

  • IOLoop(make_current=True) now works as intended insteadof raising an exception.
  • The Twisted and asyncio IOLoop implementations now clearcurrent() when they exit, like the standard IOLoops.
  • IOLoop.add_callback is faster in the single-threaded case.
  • IOLoop.add_callback no longer raises an error when called ona closed IOLoop, but the callback will not be invoked.

tornado.iostream¶

  • Coroutine-style usage of IOStream now converts most errors intoStreamClosedError, which has the effect of reducing log noise fromexceptions that are outside the application’s control (especiallySSL errors).
  • StreamClosedError now has a real_error attribute which indicateswhy the stream was closed. It is the same as the error attribute ofIOStream but may be more easily accessible than the IOStream itself.
  • Improved error handling in read_until_close.
  • Logging is less noisy when an SSL server is port scanned.
  • EINTR is now handled on all reads.

tornado.locale¶

tornado.locks¶

  • Lock and Semaphore now support the async with statement onPython 3.5.

tornado.log¶

  • A new time-based log rotation mode is available with—log_rotate_mode=time, —log-rotate-when, andlog-rotate-interval.

tornado.netutil¶

  • bind_sockets now supports SO_REUSEPORT with the reuse_port=Trueargument.

tornado.options¶

  • Dashes and underscores are now fully interchangeable in option names.

tornado.queues¶

  • Queue now supports the async for statement on Python 3.5.

tornado.simple_httpclient¶

  • When following redirects, streaming_callback andheader_callback will no longer be run on the redirect responses(only the final non-redirect).
  • Responses containing both Content-Length and Transfer-Encodingwill be treated as an error.

tornado.template¶

  • tornado.template.ParseError now includes the filename in addition toline number.
  • Whitespace handling has become more configurable. The Loaderconstructor now has a whitespace argument, there is a newtemplate_whitespace Application setting, and there is a new{% whitespace %} template directive. All of these options takea mode name defined in the tornado.template.filter_whitespace function.The default mode is single, which is the same behavior as priorversions of Tornado.
  • Non-ASCII filenames are now supported.

tornado.testing¶

  • ExpectLog objects now have a boolean logged_stack attribute tomake it easier to test whether an exception stack trace was logged.

tornado.web¶

  • The hard limit of 4000 bytes per outgoing header has been removed.
  • StaticFileHandler returns the correct Content-Type for fileswith .gz, .bz2, and .xz extensions.
  • Responses smaller than 1000 bytes will no longer be compressed.
  • The default gzip compression level is now 6 (was 9).
  • Fixed a regression in Tornado 4.2.1 that broke StaticFileHandlerwith a path of /.
  • tornado.web.HTTPError is now copyable with the copy module.
  • The exception Finish now accepts an argument which will be passed tothe method RequestHandler.finish.
  • New Application setting xsrf_cookie_kwargs can be used to setadditional attributes such as secure or httponly on theXSRF cookie.
  • Application.listen now returns the HTTPServer it created.

tornado.websocket¶

  • Fixed handling of continuation frames when compression is enabled.

原文:

https://tornado-zh-cn.readthedocs.io/zh_CN/latest/releases/v4.3.0.html