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).
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.
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.
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.
Locale.format_dateno longer forces the use of absolute dates in Russian.
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.
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.
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.
It is now possible to specify handlers by name when using the
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
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
WSGIContainernow calls the iterable’s
close()method even if an error is raised, in compliance with the spec.