File: v2.1.0.rst

package info (click to toggle)
python-tornado 6.4.2-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 3,408 kB
  • sloc: python: 28,501; javascript: 156; sh: 100; ansic: 58; xml: 49; makefile: 49; sql: 23
file content (164 lines) | stat: -rw-r--r-- 7,576 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
What's new in Tornado 2.1
=========================

Sep 20, 2011
------------

Backwards-incompatible changes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* Support for secure cookies written by pre-1.0 releases of Tornado has
  been removed.  The `.RequestHandler.get_secure_cookie` method no longer
  takes an ``include_name`` parameter.
* The ``debug`` application setting now causes stack traces to be displayed
  in the browser on uncaught exceptions.  Since this may leak sensitive
  information, debug mode is not recommended for public-facing servers.

Security fixes
~~~~~~~~~~~~~~

* Diginotar has been removed from the default CA certificates file used
  by ``SimpleAsyncHTTPClient``.

New modules
~~~~~~~~~~~

* `tornado.gen`:  A generator-based interface to simplify writing 
  asynchronous functions.
* `tornado.netutil`:  Parts of `tornado.httpserver` have been extracted into
  a new module for use with non-HTTP protocols.
* `tornado.platform.twisted`:  A bridge between the Tornado IOLoop and the
  Twisted Reactor, allowing code written for Twisted to be run on Tornado.
* `tornado.process`:  Multi-process mode has been improved, and can now restart
  crashed child processes.  A new entry point has been added at 
  `tornado.process.fork_processes`, although
  ``tornado.httpserver.HTTPServer.start`` is still supported.

``tornado.web``
~~~~~~~~~~~~~~~

* `tornado.web.RequestHandler.write_error` replaces ``get_error_html`` as the
  preferred way to generate custom error pages (``get_error_html`` is still
  supported, but deprecated)
* In `tornado.web.Application`, handlers may be specified by
  (fully-qualified) name instead of importing and passing the class object
  itself.
* It is now possible to use a custom subclass of ``StaticFileHandler``
  with the ``static_handler_class`` application setting, and this subclass
  can override the behavior of the ``static_url`` method.
* `~tornado.web.StaticFileHandler` subclasses can now override 
  ``get_cache_time`` to customize cache control behavior.
* `tornado.web.RequestHandler.get_secure_cookie` now has a ``max_age_days``
  parameter to allow applications to override the default one-month expiration.
* `~tornado.web.RequestHandler.set_cookie` now accepts a ``max_age`` keyword
  argument to set the ``max-age`` cookie attribute (note underscore vs dash)
* `tornado.web.RequestHandler.set_default_headers` may be overridden to set
  headers in a way that does not get reset during error handling.
* `.RequestHandler.add_header` can now be used to set a header that can
  appear multiple times in the response.
* `.RequestHandler.flush` 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 functions
  ``tornado.web.create_signed_value`` and ``tornado.web.decode_signed_value``.

``tornado.httpserver``
~~~~~~~~~~~~~~~~~~~~~~

* To facilitate some advanced multi-process scenarios, ``HTTPServer``
  has a new method ``add_sockets``, and socket-opening code is
  available separately as `tornado.netutil.bind_sockets`.
* The ``cookies`` property is now available on ``tornado.httpserver.HTTPRequest``
  (it is also available in its old location as a property of
  `~tornado.web.RequestHandler`)
* ``tornado.httpserver.HTTPServer.bind`` now takes a backlog argument with the
  same meaning as ``socket.listen``.
* `~tornado.httpserver.HTTPServer` can now be run on a unix socket as well
  as TCP.
* Fixed exception at startup when ``socket.AI_ADDRCONFIG`` is not available,
  as on Windows XP

``IOLoop`` and ``IOStream``
~~~~~~~~~~~~~~~~~~~~~~~~~~~

* `~tornado.iostream.IOStream` performance has been improved, especially for
  small synchronous requests.
* New methods ``tornado.iostream.IOStream.read_until_close`` and 
  ``tornado.iostream.IOStream.read_until_regex``.
* ``IOStream.read_bytes`` and ``IOStream.read_until_close`` now take a
  ``streaming_callback`` argument to return data as it is received rather
  than all at once.
* `.IOLoop.add_timeout` now accepts `datetime.timedelta` objects in addition
  to absolute timestamps.
* `~tornado.ioloop.PeriodicCallback` now sticks to the specified period
  instead of creeping later due to accumulated errors.
* `tornado.ioloop.IOLoop` and `tornado.httpclient.HTTPClient` now have
  ``close()`` methods that should be used in applications that create
  and destroy many of these objects.
* `.IOLoop.install` can now be used to use a custom subclass of IOLoop
  as the singleton without monkey-patching.
* `~tornado.iostream.IOStream` should now always call the close callback
  instead of the connect callback on a connection error.
* The `.IOStream` close callback will no longer be called while there
  are pending read callbacks that can be satisfied with buffered data.


``tornado.simple_httpclient``
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* Now supports client SSL certificates with the ``client_key`` and 
  ``client_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
* The ``allow_nonstandard_methods`` flag on HTTP client requests now
  permits methods other than ``POST`` and ``PUT`` to contain bodies.
* Fixed file descriptor leaks and multiple callback invocations in
  ``SimpleAsyncHTTPClient``
* No longer consumes extra connection resources when following redirects.
* Now works with buggy web servers that separate headers with ``\n`` instead
  of ``\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 the
  callback URI is on a different domain.
* `tornado.autoreload` has a new command-line interface which can be used
  to wrap any script.  This replaces the ``--autoreload`` argument to
  `tornado.testing.main` and is more robust against syntax errors.
* `tornado.autoreload.watch` can be used to watch files other than
  the sources of imported modules.
* ``tornado.database.Connection`` has new variants of ``execute`` and
  ``executemany`` that return the number of rows affected instead of
  the last inserted row id.
* `tornado.locale.load_translations` now accepts any properly-formatted
  locale name, not just those in the predefined ``LOCALE_NAMES`` list.
* `tornado.options.define` now takes a ``group`` parameter to group options
  in ``--help`` output.
* Template loaders now take a ``namespace`` constructor argument to add
  entries to the template namespace.
* `tornado.websocket` now supports the latest ("hybi-10") version of the
  protocol (the old version, "hixie-76" is still supported; the correct
  version is detected automatically).
* `tornado.websocket` now works on Python 3


Bug fixes
~~~~~~~~~

* Windows support has been improved.  Windows is still not an officially
  supported platform, but the test suite now passes and
  `tornado.autoreload` works.
* Uploading files whose names contain special characters will now work.
* Cookie values containing special characters are now properly quoted
  and 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 applications
  use a template variable named ``modules``.
* Requests with "Expect: 100-continue" now work on python 3