Tornado 2.3 新特性¶
May 31, 2012¶
HTTP clients¶
- tornado.httpclient.HTTPClient now supports the same constructorkeyword arguments as AsyncHTTPClient.
- The max_clients keyword argument to AsyncHTTPClient.configure now works.
- tornado.simple_httpclient now supports the OPTIONS and PATCHHTTP methods.
- tornado.simple_httpclient is better about closing its socketsinstead of leaving them for garbage collection.
- tornado.simple_httpclient correctly verifies SSL certificates forURLs containing IPv6 literals (This bug affected Python 2.5 and 2.6).
- tornado.simple_httpclient no longer includes basic auth credentialsin the Host header when those credentials are extracted from the URL.
- tornado.simple_httpclient no longer modifies the caller-supplied headerdictionary, which caused problems when following redirects.
- tornado.curl_httpclient now supports client SSL certificates (usingthe same client_cert and client_key arguments astornado.simple_httpclient)
HTTP Server¶
- 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-IPsockets. 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 fixesa compatibility problem with an iOS HTTP client library.
IOLoop and IOStream¶
- IOStream now has an error attribute that can be used to determinewhy a socket was closed.
- tornado.iostream.IOStream.read_until and read_until_regex are muchfaster with large input.
- IOStream.write performs better when given very large strings.
- IOLoop.instance() is now thread-safe.
tornado.options¶
- tornado.options options with multiple=True that are set more thanonce now overwrite rather than append. This makes it possible to overridevalues set in parse_config_file with parse_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 3regardless of the locale environment variables.
- Templates now support else clauses intry/except/finally/else blocks.
tornado.web¶
- tornado.web.RequestHandler now supports the PATCH HTTP method.Note that this means any existing methods named patch inRequestHandler subclasses will need to be renamed.
- tornado.web.addslash and removeslash decorators now send permanentredirects (301) instead of temporary (302).
- RequestHandler.flush now invokes its callback whether there was any datato flush or not.
- Repeated calls to RequestHandler.set_cookie with the same name nowoverwrite the previous cookie instead of producing additional copies.
- tornado.web.OutputTransform.transform_first_chunk now takes and returnsa status code in addition to the headers and chunk. This is abackwards-incompatible change to an interface that was never technicallyprivate, but was not included in the documentation and does not appearto have been used outside Tornado itself.
- Fixed a bug on python versions before 2.6.5 when URLSpec regexesare constructed from unicode strings and keyword arguments are extracted.
- The reverse_url function in the template namespace now comes fromthe RequestHandler rather than the Application. (Unless overridden,RequestHandler.reverse_url is just an alias for the Applicationmethod).
- The Etag header is now returned on 304 responses to an If-None-Matchrequest, improving compatibility with some caches.
- tornado.web will no longer produce responses with status code 304that also have entity headers such as Content-Length.
Other modules¶
- tornado.auth.FacebookGraphMixin no longer sends post_args redundantlyin the url.
- The extra_params argument to tornado.escape.linkify may now bea callable, to allow parameters to be chosen separately for each link.
- tornado.gen no longer leaks StackContexts when a @gen.engine wrappedfunction is called repeatedly.
- tornado.locale.get_supported_locales no longer takes a meaninglesscls argument.
- StackContext instances now have a deactivation callback that can beused 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 exceptionssuch as UnicodeDecodeError would generate TypeErrors
原文:
https://tornado-zh-cn.readthedocs.io/zh_CN/latest/releases/v2.3.0.html