Skip to content

Latest commit

 

History

History
195 lines (159 loc) · 7.63 KB

v5.1.0.rst

File metadata and controls

195 lines (159 loc) · 7.63 KB

What's new in Tornado 5.1

July 12, 2018

Deprecation notice

  • Tornado 6.0 will drop support for Python 2.7 and 3.4. The minimum supported Python version will be 3.5.2.
  • The tornado.stack_context module is deprecated and will be removed in Tornado 6.0. The reason for this is that it is not feasible to provide this module's semantics in the presence of async def native coroutines. .ExceptionStackContext is mainly obsolete thanks to coroutines. .StackContext lacks a direct replacement although the new contextvars package (in the Python standard library beginning in Python 3.7) may be an alternative.
  • Callback-oriented code often relies on .ExceptionStackContext to handle errors and prevent leaked connections. In order to avoid the risk of silently introducing subtle leaks (and to consolidate all of Tornado's interfaces behind the coroutine pattern), callback arguments throughout the package are deprecated and will be removed in version 6.0. All functions that had a callback argument removed now return a .Future which should be used instead.
  • Where possible, deprecation warnings are emitted when any of these deprecated interfaces is used. However, Python does not display deprecation warnings by default. To prepare your application for Tornado 6.0, run Python with the -Wd argument or set the environment variable PYTHONWARNINGS to d. If your application runs on Python 3 without deprecation warnings, it should be able to move to Tornado 6.0 without disruption.

tornado.auth

  • .OAuthMixin._oauth_get_user_future may now be a native coroutine.
  • All callback arguments in this package are deprecated and will be removed in 6.0. Use the coroutine interfaces instead.
  • The OAuthMixin._oauth_get_user method is deprecated and will be removed in 6.0. Override ~.OAuthMixin._oauth_get_user_future instead.

tornado.autoreload

  • The command-line autoreload wrapper is now preserved if an internal autoreload fires.
  • The command-line wrapper no longer starts duplicated processes on windows when combined with internal autoreload.

tornado.concurrent

  • .run_on_executor now returns .Future objects that are compatible with await.
  • The callback argument to .run_on_executor is deprecated and will be removed in 6.0.
  • .return_future is deprecated and will be removed in 6.0.

tornado.gen

  • Some older portions of this module are deprecated and will be removed in 6.0. This includes .engine, .YieldPoint, .Callback, .Wait, .WaitAll, .MultiYieldPoint, and .Task.
  • Functions decorated with @gen.coroutine will no longer accept callback arguments in 6.0.

tornado.httpclient

  • The behavior of raise_error=False is changing in 6.0. Currently it suppresses all errors; in 6.0 it will only suppress the errors raised due to completed responses with non-200 status codes.
  • The callback argument to .AsyncHTTPClient.fetch is deprecated and will be removed in 6.0.
  • tornado.httpclient.HTTPError has been renamed to .HTTPClientError to avoid ambiguity in code that also has to deal with tornado.web.HTTPError. The old name remains as an alias.
  • tornado.curl_httpclient now supports non-ASCII characters in username and password arguments.
  • .HTTPResponse.request_time now behaves consistently across simple_httpclient and curl_httpclient, excluding time spent in the max_clients queue in both cases (previously this time was included in simple_httpclient but excluded in curl_httpclient). In both cases the time is now computed using a monotonic clock where available.
  • .HTTPResponse now has a start_time attribute recording a wall-clock (time.time) timestamp at which the request started (after leaving the max_clients queue if applicable).

tornado.httputil

  • .parse_multipart_form_data now recognizes non-ASCII filenames in RFC 2231/5987 (filename*=) format.
  • .HTTPServerRequest.write is deprecated and will be removed in 6.0. Use the methods of request.connection instead.
  • Malformed HTTP headers are now logged less noisily.

tornado.ioloop

  • .PeriodicCallback now supports a jitter argument to randomly vary the timeout.
  • .IOLoop.set_blocking_signal_threshold, ~.IOLoop.set_blocking_log_threshold, ~.IOLoop.log_stack, and .IOLoop.handle_callback_exception are deprecated and will be removed in 6.0.
  • Fixed a KeyError in .IOLoop.close when .IOLoop objects are being opened and closed in multiple threads.

tornado.iostream

  • All callback arguments in this module are deprecated except for .BaseIOStream.set_close_callback. They will be removed in 6.0.
  • streaming_callback arguments to .BaseIOStream.read_bytes and .BaseIOStream.read_until_close are deprecated and will be removed in 6.0.

tornado.netutil

  • Improved compatibility with GNU Hurd.

tornado.options

  • tornado.options.parse_config_file now allows setting options to strings (which will be parsed the same way as tornado.options.parse_command_line) in addition to the specified type for the option.

tornado.platform.twisted

  • .TornadoReactor and .TwistedIOLoop are deprecated and will be removed in 6.0. Instead, Tornado will always use the asyncio event loop and twisted can be configured to do so as well.

tornado.stack_context

  • The tornado.stack_context module is deprecated and will be removed in 6.0.

tornado.testing

  • .AsyncHTTPTestCase.fetch now takes a raise_error argument. This argument has the same semantics as .AsyncHTTPClient.fetch, but defaults to false because tests often need to deal with non-200 responses (and for backwards-compatibility).
  • The .AsyncTestCase.stop and .AsyncTestCase.wait methods are deprecated.

tornado.web

  • New method .RequestHandler.detach can be used from methods that are not decorated with @asynchronous (the decorator was required to use self.request.connection.detach().
  • .RequestHandler.finish and .RequestHandler.render now return Futures that can be used to wait for the last part of the response to be sent to the client.
  • .FallbackHandler now calls on_finish for the benefit of subclasses that may have overridden it.
  • The .asynchronous decorator is deprecated and will be removed in 6.0.
  • The callback argument to .RequestHandler.flush is deprecated and will be removed in 6.0.

tornado.websocket

  • When compression is enabled, memory limits now apply to the post-decompression size of the data, protecting against DoS attacks.
  • .websocket_connect now supports subprotocols.
  • .WebSocketHandler and .WebSocketClientConnection now have selected_subprotocol attributes to see the subprotocol in use.
  • The .WebSocketHandler.select_subprotocol method is now called with an empty list instead of a list containing an empty string if no subprotocols were requested by the client.
  • .WebSocketHandler.open may now be a coroutine.
  • The data argument to .WebSocketHandler.ping is now optional.
  • Client-side websocket connections no longer buffer more than one message in memory at a time.
  • Exception logging now uses .RequestHandler.log_exception.

tornado.wsgi

  • .WSGIApplication and .WSGIAdapter are deprecated and will be removed in Tornado 6.0.