- tornado.httpclient.HTTPClient now supports the same constructor keyword arguments as .AsyncHTTPClient.
- The
max_clients
keyword argument to .AsyncHTTPClient.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
)
- .HTTPServer now works correctly with paths starting with
//
HTTPHeaders.copy
(inherited from dict.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.
- .IOStream now has an
error
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 options with
multiple=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.
- 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.RequestHandler now supports the
PATCH
HTTP method. Note that this means any existing methods namedpatch
inRequestHandler
subclasses will need to be renamed. - tornado.web.addslash and
removeslash
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 the .RequestHandler rather than the .Application. (Unless overridden, .RequestHandler.reverse_url is just an alias for the .Application 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 as
Content-Length
.
- tornado.auth.FacebookGraphMixin no longer sends
post_args
redundantly in the url. - The
extra_params
argument to tornado.escape.linkify may now be a callable, to allow parameters to be chosen separately for each link. - tornado.gen no longer leaks
StackContexts
when a@gen.engine
wrapped function is called repeatedly. - tornado.locale.get_supported_locales no longer takes a meaningless
cls
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 generate
TypeErrors