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 ofasync def
native coroutines.ExceptionStackContext
is mainly obsolete thanks to coroutines.StackContext
lacks a direct replacement although the newcontextvars
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 acallback
argument removed now return aFuture
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 variablePYTHONWARNINGS
tod
. 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_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 returnsFuture
objects that are compatible withawait
.The
callback
argument torun_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
, andTask
.Functions decorated with
@gen.coroutine
will no longer acceptcallback
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 toAsyncHTTPClient.fetch
is deprecated and will be removed in 6.0.tornado.httpclient.HTTPError
has been renamed toHTTPClientError
to avoid ambiguity in code that also has to deal withtornado.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 acrosssimple_httpclient
andcurl_httpclient
, excluding time spent in themax_clients
queue in both cases (previously this time was included insimple_httpclient
but excluded incurl_httpclient
). In both cases the time is now computed using a monotonic clock where available.HTTPResponse
now has astart_time
attribute recording a wall-clock (time.time
) timestamp at which the request started (after leaving themax_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 ofrequest.connection
instead.Malformed HTTP headers are now logged less noisily.
tornado.ioloop
¶
PeriodicCallback
now supports ajitter
argument to randomly vary the timeout.IOLoop.set_blocking_signal_threshold
,IOLoop.set_blocking_log_threshold
,IOLoop.log_stack
, andIOLoop.handle_callback_exception
are deprecated and will be removed in 6.0.Fixed a
KeyError
inIOLoop.close
whenIOLoop
objects are being opened and closed in multiple threads.
tornado.iostream
¶
All
callback
arguments in this module are deprecated except forBaseIOStream.set_close_callback
. They will be removed in 6.0.streaming_callback
arguments toBaseIOStream.read_bytes
andBaseIOStream.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 astornado.options.parse_command_line
) in addition to the specified type for the option.
tornado.platform.twisted
¶
TornadoReactor
andTwistedIOLoop
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 araise_error
argument. This argument has the same semantics asAsyncHTTPClient.fetch
, but defaults to false because tests often need to deal with non-200 responses (and for backwards-compatibility).The
AsyncTestCase.stop
andAsyncTestCase.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 useself.request.connection.detach()
.RequestHandler.finish
andRequestHandler.render
now returnFutures
that can be used to wait for the last part of the response to be sent to the client.FallbackHandler
now callson_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 toRequestHandler.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
andWebSocketClientConnection
now haveselected_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 toWebSocketHandler.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
andWSGIAdapter
are deprecated and will be removed in Tornado 6.0.