What’s new in Tornado 5.1
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_contextmodule 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 defnative coroutines.ExceptionStackContextis mainly obsolete thanks to coroutines.StackContextlacks a direct replacement although the newcontextvarspackage (in the Python standard library beginning in Python 3.7) may be an alternative. - Callback-oriented code often relies on
ExceptionStackContextto 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),callbackarguments throughout the package are deprecated and will be removed in version 6.0. All functions that had acallbackargument 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
-Wdargument or set the environment variablePYTHONWARNINGStod. 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
callbackarguments in this package are deprecated and will be removed in 6.0. Use the coroutine interfaces instead. - The
OAuthMixin._oauth_get_usermethod 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 returns Future objects that are compatible with
await. - The
callbackargument to run_on_executor is deprecated and will be removed in 6.0. return_futureis 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.coroutinewill no longer acceptcallbackarguments in 6.0.
tornado.httpclient
- The behavior of
raise_error=Falseis 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
callbackargument 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_httpclientnow supports non-ASCII characters in username and password arguments..HTTPResponse.request_timenow behaves consistently acrosssimple_httpclientandcurl_httpclient, excluding time spent in themax_clientsqueue in both cases (previously this time was included insimple_httpclientbut excluded incurl_httpclient). In both cases the time is now computed using a monotonic clock where available.- HTTPResponse now has a
start_timeattribute recording a wall-clock (time.time) timestamp at which the request started (after leaving themax_clientsqueue if applicable).
tornado.httputil
- parse_multipart_form_data now recognizes non-ASCII filenames in RFC 2231/5987 (
filename*=) format. HTTPServerRequest.writeis deprecated and will be removed in 6.0. Use the methods ofrequest.connectioninstead.- Malformed HTTP headers are now logged less noisily.
tornado.ioloop
- PeriodicCallback now supports a
jitterargument to randomly vary the timeout. IOLoop.set_blocking_signal_threshold,IOLoop.set_blocking_log_threshold,IOLoop.log_stack, andIOLoop.handle_callback_exceptionare 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
callbackarguments in this module are deprecated except for BaseIOStream.set_close_callback. They will be removed in 6.0. streaming_callbackarguments 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
TornadoReactorandTwistedIOLoopare 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_contextmodule is deprecated and will be removed in 6.0.
tornado.testing
- AsyncHTTPTestCase.fetch now takes a
raise_errorargument. 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 useself.request.connection.detach(). - RequestHandler.finish and RequestHandler.render now return
Futuresthat can be used to wait for the last part of the response to be sent to the client. - FallbackHandler now calls
on_finishfor the benefit of subclasses that may have overridden it. - The
asynchronousdecorator is deprecated and will be removed in 6.0. - The
callbackargument 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_subprotocolattributes 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
dataargument 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
WSGIApplicationandWSGIAdapterare deprecated and will be removed in Tornado 6.0.
