If a Future contains an exception but that exception is never
examined or re-raised (e.g. by yielding the Future), a stack
trace will be logged when the Future is garbage-collected.
New class tornado.gen.WaitIterator provides a way to iterate
over Futures in the order they resolve.
When the appropriate packages are installed, it is possible to yield
asyncio.Future or Twisted Defered objects in Tornado coroutines.
Backwards-compatibility notes
HTTPServer now calls start_request with the correct
arguments. This change is backwards-incompatible, affecting any
application which implemented HTTPServerConnectionDelegate by
following the example of Application instead of the documented
method signatures.
If a Future contains an exception but that exception is never
examined or re-raised (e.g. by yielding the Future), a stack
trace will be logged when the Future is garbage-collected.
Future now catches and logs exceptions in its callbacks.
tornado.curl_httpclient
tornado.curl_httpclient now supports request bodies for PATCH
and custom methods.
tornado.curl_httpclient now supports resubmitting bodies after
following redirects for methods other than POST.
curl_httpclient now runs the streaming and header callbacks on
the IOLoop.
tornado.curl_httpclient now uses its own logger for debug output
so it can be filtered more easily.
New class tornado.gen.WaitIterator provides a way to iterate
over Futures in the order they resolve.
When the singledispatch library is available (standard on
Python 3.4, available via pip install singledispatch on older versions),
the convert_yielded function can be used to make other kinds of objects
yieldable in coroutines.
tornado.httpclient.HTTPRequest accepts a new argument
raise_error=False to suppress the default behavior of raising an
error for non-200 response codes.
HTTPServer now calls start_request with the correct
arguments. This change is backwards-incompatible, afffecting any
application which implemented HTTPServerConnectionDelegate by
following the example of Application instead of the documented
method signatures.
HTTPServer now tolerates extra newlines which are sometimes inserted
between requests on keep-alive connections.
HTTPServer can now use keep-alive connections after a request
with a chunked body.
HTTPServer now always reports HTTP/1.1 instead of echoing
the request version.
The context argument to HTTPServerRequest is now optional,
and if a context is supplied the remote_ip attribute is also optional.
HTTPServerRequest.body is now always a byte string (previously the default
empty body would be a unicode string on python 3).
Header parsing now works correctly when newline-like unicode characters
are present.
Header parsing again supports both CRLF and bare LF line separators.
Malformed multipart/form-data bodies will always be logged
quietly instead of raising an unhandled exception; previously
the behavior was inconsistent depending on the exact error.
It is now possible to yield asyncio.Future objects in coroutines
when the singledispatch library is available and
tornado.platform.asyncio has been imported.
It is now possible to yield Deferred objects in coroutines
when the singledispatch library is available and
tornado.platform.twisted has been imported.
AsyncTestCase has better support for multiple exceptions. Previously
it would silently swallow all but the last; now it raises the first
and logs all the rest.