196 lines
7.7 KiB
ReStructuredText
196 lines
7.7 KiB
ReStructuredText
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.
|