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
- 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.
tornado.platform.asynciomodule provides integration with the
asynciomodule introduced in Python 3.4 (also available for Python 3.3 with
pip install asyncio).
GoogleOAuth2Mixinsupport authentication to Google services with OAuth 2 instead of OpenID and OAuth 1.
FacebookGraphMixinhas been updated to use the current Facebook login URL, which saves a redirect.
TracebackFuturenow accepts a
timeoutkeyword argument (although it is still incorrect to use a non-zero timeout in non-blocking code).
tornado.curl_httpclientnow 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.genwhen yielding a
Futurethat is already done.
tornado.httpclient.HTTPRequestnow uses property setters so that setting attributes after construction applies the same conversions as
__init__(e.g. converting the body attribute to bytes).
x-www-form-urlencodedrequest bodies will now log a warning and continue instead of causing the request to fail (similar to the existing handling of malformed
multipart/form-databodies. 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.handle_callback_exceptionconsistently for error logging.
IOLoopnow frees callback objects earlier, reducing memory usage while idle.
IOLoopwill no longer call
logging.basicConfigif there is a handler defined for the root logger or for the
tornado.applicationloggers (previously it only looked at the root logger).
ECONNABORTEDerror codes in more places (which was mainly an issue on Windows).
IOStreamnow frees memory earlier if a connection is closed while there is data in the write buffer.
EAGAINerror codes correctly.
SSLIOStreamnow 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_nodelaywhen a connection has been reset.
HTTPRequest.remote_ip) now rejects empty strings.
- Synchronously using
ThreadedResolverat import time to resolve a unicode hostname no longer deadlocks.
TwistedResolvernow has better error handling.
simple_httpclientnow applies the
connect_timeoutto requests that are queued and have not yet started.
- On Python 2.6,
simple_httpclientnow uses TLSv1 instead of SSLv3.
simple_httpclientnow enforces the connect timeout during DNS resolution.
- The embedded
ca-certificates.crtfile has been updated with the current Mozilla CA list.
StaticFileHandlerno longer fails if the client requests a
Rangethat is larger than the entire file (Facebook has a crawler that does this).
RequestHandler.on_connection_closenow works correctly on subsequent requests of a keep-alive connection.
- New application setting
default_handler_classcan be used to easily set up custom 404 pages.
- New application settings
serve_tracebackcan be used to control individual aspects of debug mode.
- New methods
RequestHandler.get_body_argumentand new attributes
HTTPRequest.body_argumentsallow access to arguments without intermingling those from the query string with those from the request body.
RequestHandler.decode_argumentand related methods now raise an
UnicodeDecodeErrorwhen the argument could not be decoded.
patharguments, just like
- It is now possible to specify handlers by name when using the
Applicationnow accepts 4-tuples to specify the
nameparameter (which previously required constructing a
tornado.web.URLSpecobject instead of a tuple).
- Fixed an incorrect error message when handler methods return a value other than None or a Future.
- Exceptions will no longer be logged twice when using both
AttributeErrorwhen the connection has been closed.
websocket_connectnow accepts preconstructed
- Fix a bug with
WebSocketHandlerwhen used with some proxies that unconditionally modify the
websocket_connectnow returns an error immediately for refused connections instead of waiting for the timeout.
WebSocketClientConnectionnow has a