What’s new in Tornado 6.0¶
Mar 1, 2019¶
- Python 2.7 and 3.4 are no longer supported; the minimum supported Python version is 3.5.2.
- APIs deprecated in Tornado 5.1 have been removed. This includes the
tornado.stack_contextmodule and most
callbackarguments throughout the package. All removed APIs emitted
DeprecationWarningwhen used in Tornado 5.1, so running your application with the
-WdPython command-line flag or the environment variable
PYTHONWARNINGS=dshould tell you whether your application is ready to move to Tornado 6.0.
.WebSocketHandler.getis now a coroutine and must be called accordingly in any subclasses that override this method (but note that overriding
getis not recommended; either
openshould be used instead).
- Tornado now includes type annotations compatible with
mypy. These annotations will be used when type-checking your application with
mypy, and may be usable in editors and other tools.
- Tornado now uses native coroutines internally, improving performance.
callbackarguments in this package have been removed. Use the coroutine interfaces instead.
OAuthMixin._oauth_get_usermethod has been removed. Override
run_on_executorhas been removed.
return_futurehas been removed.
- Some older portions of this module have been removed. This includes
- Functions decorated with
@gen.coroutineno longer accept
- The behavior of
raise_error=Falsehas changed. Now only suppresses the errors raised due to completed responses with non-200 status codes (previously it suppressed all errors).
AsyncHTTPClient.fetchhas been removed.
HTTPServerRequest.writehas been removed. Use the methods of
Content-Encodingvalues now log warnings only for content types that we would otherwise attempt to parse.
IOLoop.handle_callback_exceptionhave been removed.
- Improved performance of
- The results of
getaddrinfoare now sorted by address family to avoid partial failures and deadlocks.
- The default HTTP client now supports the
network_interfacerequest argument to specify the source IP for the connection.
- If a server returns a 3xx response code without a
Locationheader, the response is raised or returned directly instead of trying and failing to follow the redirect.
- When following redirects, methods other than
POSTwill no longer be transformed into
GETrequests. 301 (permanent) redirects are now treated the same way as 302 (temporary) and 303 (see other) redirects in this respect.
- Following redirects now works with
tornado.stack_contextmodule has been removed.
AsyncHTTPTestCasenow drops all references to the
tearDown, allowing its memory to be reclaimed sooner.
AsyncTestCasenow cancels all pending coroutines in
tearDown, in an effort to reduce warnings from the python runtime about coroutines that were not awaited. Note that this may cause
asyncio.CancelledErrorto be logged in other places. Coroutines that expect to be running at test shutdown may need to catch this exception.
- Pings and other messages sent while the connection is closing are now silently dropped instead of logging exceptions.
- Errors raised by
open()are now caught correctly when this method is a coroutine.