What’s new in Tornado 3.2
Jan 14, 2014
- Tornado now depends on the backports.ssl_match_hostname when
running on Python 2. This will be installed automatically when using pip
- Tornado now includes an optional C extension module, which greatly improves
performance of websockets. This extension will be built automatically
if a C compiler is found at install time.
- The tornado.platform.asyncio module provides integration with the
asyncio module introduced in Python 3.4 (also available for Python
3.3 with pip install asyncio).
- Added GoogleOAuth2Mixin support authentication to Google services
with OAuth 2 instead of OpenID and OAuth 1.
- FacebookGraphMixin has been updated to use the current Facebook login
URL, which saves a redirect.
- TracebackFuture now accepts a timeout keyword argument (although
it is still incorrect to use a non-zero timeout in non-blocking code).
- tornado.curl_httpclient now works on Python 3 with the
soon-to-be-released pycurl 7.19.3, which will officially support
Python 3 for the first time. Note that there are some unofficial
Python 3 ports of pycurl (Ubuntu has included one for its past
several releases); these are not supported for use with Tornado.
- Coroutines may now yield dicts in addition to lists to wait for
multiple tasks in parallel.
- Improved performance of tornado.gen when yielding a Future that is
- tornado.httpclient.HTTPRequest now uses property setters so that
setting attributes after construction applies the same conversions
as __init__ (e.g. converting the body attribute to bytes).
- Malformed x-www-form-urlencoded request bodies will now log a warning
and continue instead of causing the request to fail (similar to the existing
handling of malformed multipart/form-data bodies. This is done mainly
because some libraries send this content type by default even when the data
is not form-encoded.
- Fix some error messages for unix sockets (and other non-IP sockets)
- IOLoop now uses handle_callback_exception consistently for
- IOLoop now frees callback objects earlier, reducing memory usage
- IOLoop will no longer call logging.basicConfig if there is a handler
defined for the root logger or for the tornado or tornado.application
loggers (previously it only looked at the root logger).
- IOStream now recognizes ECONNABORTED error codes in more places
(which was mainly an issue on Windows).
- IOStream now frees memory earlier if a connection is closed while
there is data in the write buffer.
- PipeIOStream now handles EAGAIN error codes correctly.
- SSLIOStream now initiates the SSL handshake automatically without
waiting for the application to try and read or write to the connection.
- Swallow a spurious exception from set_nodelay when a connection
has been reset.
- is_valid_ip (and therefore HTTPRequest.remote_ip) now rejects
- Synchronously using ThreadedResolver at import time to resolve
a unicode hostname no longer deadlocks.
- simple_httpclient now applies the connect_timeout to requests
that are queued and have not yet started.
- On Python 2.6, simple_httpclient now uses TLSv1 instead of SSLv3.
- simple_httpclient now enforces the connect timeout during DNS resolution.
- The embedded ca-certificates.crt file has been updated with the current
Mozilla CA list.
- WSGIContainer now calls the iterable’s close() method even if
an error is raised, in compliance with the spec.