Tornado 2.1 新特性¶

    • Support for secure cookies written by pre-1.0 releases of Tornado hasbeen removed. The RequestHandler.get_secure_cookie method no longertakes an include_name parameter.
    • The debug application setting now causes stack traces to be displayedin the browser on uncaught exceptions. Since this may leak sensitiveinformation, debug mode is not recommended for public-facing servers.

    Security fixes¶

    • Diginotar has been removed from the default CA certificates file usedby SimpleAsyncHTTPClient.

    New modules¶

    • : A generator-based interface to simplify writingasynchronous functions.
    • tornado.netutil: Parts of have been extracted intoa new module for use with non-HTTP protocols.
    • tornado.platform.twisted: A bridge between the Tornado IOLoop and theTwisted Reactor, allowing code written for Twisted to be run on Tornado.
    • : Multi-process mode has been improved, and can now restartcrashed child processes. A new entry point has been added attornado.process.fork_processes, althoughtornado.httpserver.HTTPServer.start is still supported.
    • replaces get_error_html as thepreferred way to generate custom error pages (get_error_html is stillsupported, but deprecated)
    • In tornado.web.Application, handlers may be specified by(fully-qualified) name instead of importing and passing the class objectitself.
    • It is now possible to use a custom subclass of StaticFileHandlerwith the static_handler_class application setting, and this subclasscan override the behavior of the static_url method.
    • subclasses can now overrideget_cache_time to customize cache control behavior.
    • tornado.web.RequestHandler.get_secure_cookie now has a max_age_daysparameter to allow applications to override the default one-month expiration.
    • may be overridden to setheaders in a way that does not get reset during error handling.
    • RequestHandler.add_header can now be used to set a header that canappear multiple times in the response.
    • can now take a callback for flow control.
    • The application/json content type can now be gzipped.
    • The cookie-signing functions are now accessible as static functionstornado.web.create_signed_value and tornado.web.decode_signed_value.

    tornado.httpserver¶

    • To facilitate some advanced multi-process scenarios, HTTPServerhas a new method add_sockets, and socket-opening code isavailable separately as .
    • The cookies property is now available on tornado.httpserver.HTTPRequest(it is also available in its old location as a property ofRequestHandler)
    • tornado.httpserver.HTTPServer.bind now takes a backlog argument with thesame meaning as socket.listen.
    • can now be run on a unix socket as wellas TCP.
    • Fixed exception at startup when socket.AI_ADDRCONFIG is not available,as on Windows XP

    IOLoop and IOStream¶

    • performance has been improved, especially forsmall synchronous requests.
    • New methods tornado.iostream.IOStream.read_until_close andtornado.iostream.IOStream.read_until_regex.
    • IOStream.read_bytes and IOStream.read_until_close now take astreaming_callback argument to return data as it is received ratherthan all at once.
    • IOLoop.add_timeout now accepts objects in additionto absolute timestamps.
    • PeriodicCallback now sticks to the specified periodinstead of creeping later due to accumulated errors.
    • and tornado.httpclient.HTTPClient now haveclose() methods that should be used in applications that createand destroy many of these objects.
    • can now be used to use a custom subclass of IOLoopas the singleton without monkey-patching.
    • IOStream should now always call the close callbackinstead of the connect callback on a connection error.
    • The close callback will no longer be called while thereare pending read callbacks that can be satisfied with buffered data.
    • Now supports client SSL certificates with the client_key andclient_cert parameters to tornado.httpclient.HTTPRequest
    • Now takes a maximum buffer size, to allow reading files larger than 100MB
    • Now works with HTTP 1.0 servers that don’t send a Content-Length header
    • Fixed file descriptor leaks and multiple callback invocations inSimpleAsyncHTTPClient
    • No longer consumes extra connection resources when following redirects.
    • Now works with buggy web servers that separate headers with \n insteadof \r\n\r\n.
    • Now sets response.request_time correctly.
    • Connect timeouts now work correctly.

    Other modules¶

    • tornado.auth.OpenIdMixin now uses the correct realm when thecallback URI is on a different domain.
    • has a new command-line interface which can be usedto wrap any script. This replaces the —autoreload argument totornado.testing.main and is more robust against syntax errors.
    • can be used to watch files other thanthe sources of imported modules.
    • tornado.database.Connection has new variants of execute andexecutemany that return the number of rows affected instead ofthe last inserted row id.
    • tornado.locale.load_translations now accepts any properly-formattedlocale name, not just those in the predefined LOCALE_NAMES list.
    • now takes a group parameter to group optionsin —help output.
    • Template loaders now take a namespace constructor argument to addentries to the template namespace.
    • tornado.websocket now supports the latest (“hybi-10”) version of theprotocol (the old version, “hixie-76” is still supported; the correctversion is detected automatically).
    • now works on Python 3

    Bug fixes¶

    • Windows support has been improved. Windows is still not an officiallysupported platform, but the test suite now passes and works.
    • Uploading files whose names contain special characters will now work.
    • Cookie values containing special characters are now properly quotedand unquoted.
    • Multi-line headers are now supported.
    • Repeated Content-Length headers (which may be added by certain proxies)are now supported in HTTPServer.
    • Unicode string literals now work in template expressions.
    • The template {% module %} directive now works even if applicationsuse a template variable named modules.
    • Requests with “Expect: 100-continue” now work on python 3