Skip to content

Latest commit

 

History

History
194 lines (153 loc) · 7.1 KB

v3.2.0.rst

File metadata and controls

194 lines (153 loc) · 7.1 KB

What's new in Tornado 3.2

Jan 14, 2014

Installation

  • Tornado now depends on the backports.ssl_match_hostname when running on Python 2. This will be installed automatically when using pip or easy_install
  • 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.

New modules

  • 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).

tornado.auth

  • 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.

tornado.concurrent

  • 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

  • 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.

tornado.escape

  • .xhtml_escape now escapes apostrophes as well.
  • tornado.escape.utf8, .to_unicode, and .native_str now raise TypeError instead of AssertionError when given an invalid value.

tornado.gen

  • 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 already done.

tornado.httpclient

  • 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).

tornado.httpserver

  • 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)

tornado.ioloop

  • .IOLoop now uses ~.IOLoop.handle_callback_exception consistently for error logging.
  • .IOLoop now frees callback objects earlier, reducing memory usage while idle.
  • .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).

tornado.iostream

  • .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.

tornado.locale

  • .Locale.format_date no longer forces the use of absolute dates in Russian.

tornado.log

  • Fix an error from tornado.log.enable_pretty_logging when sys.stderr does not have an isatty method.
  • tornado.log.LogFormatter now accepts keyword arguments fmt and datefmt.

tornado.netutil

  • .is_valid_ip (and therefore HTTPRequest.remote_ip) now rejects empty strings.
  • Synchronously using .ThreadedResolver at import time to resolve a unicode hostname no longer deadlocks.

tornado.platform.twisted

  • .TwistedResolver now has better error handling.

tornado.process

  • .Subprocess no longer leaks file descriptors if subprocess.Popen fails.

tornado.simple_httpclient

  • 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.

tornado.web

  • .StaticFileHandler no longer fails if the client requests a Range that is larger than the entire file (Facebook has a crawler that does this).
  • .RequestHandler.on_connection_close now works correctly on subsequent requests of a keep-alive connection.
  • New application setting default_handler_class can be used to easily set up custom 404 pages.
  • New application settings autoreload, compiled_template_cache, static_hash_cache, and serve_traceback can be used to control individual aspects of debug mode.
  • New methods .RequestHandler.get_query_argument and .RequestHandler.get_body_argument and new attributes HTTPRequest.query_arguments and HTTPRequest.body_arguments allow access to arguments without intermingling those from the query string with those from the request body.
  • .RequestHandler.decode_argument and related methods now raise an HTTPError(400) instead of UnicodeDecodeError when the argument could not be decoded.
  • .RequestHandler.clear_all_cookies now accepts domain and path arguments, just like ~.RequestHandler.clear_cookie.
  • It is now possible to specify handlers by name when using the tornado.web.URLSpec class.
  • .Application now accepts 4-tuples to specify the name parameter (which previously required constructing a tornado.web.URLSpec object 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 @asynchronous and @gen.coroutine

tornado.websocket

  • .WebSocketHandler.write_message now raises .WebSocketClosedError instead of AttributeError when the connection has been closed.
  • .websocket_connect now accepts preconstructed HTTPRequest objects.
  • Fix a bug with .WebSocketHandler when used with some proxies that unconditionally modify the Connection header.
  • .websocket_connect now returns an error immediately for refused connections instead of waiting for the timeout.
  • .WebSocketClientConnection now has a close method.

tornado.wsgi

  • .WSGIContainer now calls the iterable's close() method even if an error is raised, in compliance with the spec.