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 aFuturewhich 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_futuremay 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_futureinstead.
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_executornow returnsFutureobjects that are compatible withawait.The
callbackargument torun_on_executoris 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 toAsyncHTTPClient.fetchis deprecated and will be removed in 6.0.tornado.httpclient.HTTPErrorhas been renamed toHTTPClientErrorto avoid ambiguity in code that also has to deal withtornado.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.HTTPResponsenow has astart_timeattribute recording a wall-clock (time.time) timestamp at which the request started (after leaving themax_clientsqueue if applicable).
tornado.httputil¶
parse_multipart_form_datanow 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¶
PeriodicCallbacknow supports ajitterargument 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
KeyErrorinIOLoop.closewhenIOLoopobjects are being opened and closed in multiple threads.
tornado.iostream¶
All
callbackarguments in this module are deprecated except forBaseIOStream.set_close_callback. They will be removed in 6.0.streaming_callbackarguments toBaseIOStream.read_bytesandBaseIOStream.read_until_closeare deprecated and will be removed in 6.0.
tornado.netutil¶
Improved compatibility with GNU Hurd.
tornado.options¶
tornado.options.parse_config_filenow 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¶
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.fetchnow takes araise_errorargument. 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.stopandAsyncTestCase.waitmethods are deprecated.
tornado.web¶
New method
RequestHandler.detachcan be used from methods that are not decorated with@asynchronous(the decorator was required to useself.request.connection.detach().RequestHandler.finishandRequestHandler.rendernow returnFuturesthat can be used to wait for the last part of the response to be sent to the client.FallbackHandlernow callson_finishfor the benefit of subclasses that may have overridden it.The
asynchronousdecorator is deprecated and will be removed in 6.0.The
callbackargument toRequestHandler.flushis 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_connectnow supports subprotocols.WebSocketHandlerandWebSocketClientConnectionnow haveselected_subprotocolattributes to see the subprotocol in use.The
WebSocketHandler.select_subprotocolmethod is now called with an empty list instead of a list containing an empty string if no subprotocols were requested by the client.WebSocketHandler.openmay now be a coroutine.The
dataargument toWebSocketHandler.pingis 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.