What’s new in Tornado 2.3¶
May 31, 2012¶
HTTP clients¶
tornado.httpclient.HTTPClient
now supports the same constructor keyword arguments asAsyncHTTPClient
.- The
max_clients
keyword argument toAsyncHTTPClient.configure
now works. tornado.simple_httpclient
now supports theOPTIONS
andPATCH
HTTP methods.tornado.simple_httpclient
is better about closing its sockets instead of leaving them for garbage collection.tornado.simple_httpclient
correctly verifies SSL certificates for URLs containing IPv6 literals (This bug affected Python 2.5 and 2.6).tornado.simple_httpclient
no longer includes basic auth credentials in theHost
header when those credentials are extracted from the URL.tornado.simple_httpclient
no longer modifies the caller-supplied header dictionary, which caused problems when following redirects.tornado.curl_httpclient
now supports client SSL certificates (using the sameclient_cert
andclient_key
arguments astornado.simple_httpclient
)
HTTP Server¶
HTTPServer
now works correctly with paths starting with//
HTTPHeaders.copy
(inherited fromdict.copy
) now works correctly.HTTPConnection.address
is now always the socket address, even for non-IP sockets.HTTPRequest.remote_ip
is still always an IP-style address (fake data is used for non-IP sockets)- Extra data at the end of multipart form bodies is now ignored, which fixes a compatibility problem with an iOS HTTP client library.
IOLoop
and IOStream
¶
IOStream
now has anerror
attribute that can be used to determine why a socket was closed.tornado.iostream.IOStream.read_until
andread_until_regex
are much faster with large input.IOStream.write
performs better when given very large strings.IOLoop.instance()
is now thread-safe.
tornado.options
¶
tornado.options
options withmultiple=True
that are set more than once now overwrite rather than append. This makes it possible to override values set inparse_config_file
withparse_command_line
.tornado.options
--help
output is now prettier.tornado.options.options
now supports attribute assignment.
tornado.template
¶
- Template files containing non-ASCII (utf8) characters now work on Python 3 regardless of the locale environment variables.
- Templates now support
else
clauses intry
/except
/finally
/else
blocks.
tornado.web
¶
tornado.web.RequestHandler
now supports thePATCH
HTTP method. Note that this means any existing methods namedpatch
inRequestHandler
subclasses will need to be renamed.tornado.web.addslash
andremoveslash
decorators now send permanent redirects (301) instead of temporary (302).RequestHandler.flush
now invokes its callback whether there was any data to flush or not.- Repeated calls to
RequestHandler.set_cookie
with the same name now overwrite the previous cookie instead of producing additional copies. tornado.web.OutputTransform.transform_first_chunk
now takes and returns a status code in addition to the headers and chunk. This is a backwards-incompatible change to an interface that was never technically private, but was not included in the documentation and does not appear to have been used outside Tornado itself.- Fixed a bug on python versions before 2.6.5 when
URLSpec
regexes are constructed from unicode strings and keyword arguments are extracted. - The
reverse_url
function in the template namespace now comes from theRequestHandler
rather than theApplication
. (Unless overridden,RequestHandler.reverse_url
is just an alias for theApplication
method). - The
Etag
header is now returned on 304 responses to anIf-None-Match
request, improving compatibility with some caches. tornado.web
will no longer produce responses with status code 304 that also have entity headers such asContent-Length
.
Other modules¶
tornado.auth.FacebookGraphMixin
no longer sendspost_args
redundantly in the url.- The
extra_params
argument totornado.escape.linkify
may now be a callable, to allow parameters to be chosen separately for each link. tornado.gen
no longer leaksStackContexts
when a@gen.engine
wrapped function is called repeatedly.tornado.locale.get_supported_locales
no longer takes a meaninglesscls
argument.StackContext
instances now have a deactivation callback that can be used to prevent further propagation.tornado.testing.AsyncTestCase.wait
now resets its timeout on each call.tornado.wsgi.WSGIApplication
now parses arguments correctly on Python 3.- Exception handling on Python 3 has been improved; previously some exceptions
such as
UnicodeDecodeError
would generateTypeErrors