首页
开源
资讯
活动
开源许可证
软件工程云服务
软件代码质量检测云服务
持续集成与部署云服务
社区个性化内容推荐服务
贡献审阅人推荐服务
群体化学习服务
重睛鸟代码扫描工具
登录
注册
代码拉取完成,页面将自动刷新
Watch
1
Star
0
Fork
0
AwesomeApps
/
tornado
Fork 仓库
加载中
取消
确认
代码
Issues
0
Pull Requests
0
Wiki
8
统计
标签
标签名
描述
提交信息
操作
v6.1.0
What's new in Tornado 6.1.0 Oct 30, 2020 ------------ Deprecation notice ~~~~~~~~~~~~~~~~~~ - This is the last release of Tornado to support Python 3.5. Future versions will require Python 3.6 or newer. General changes ~~~~~~~~~~~~~~~ - Windows support has been improved. Tornado is now compatible with the proactor event loop (which became the default in Python 3.8) by automatically falling back to running a selector in a second thread. This means that it is no longer necessary to explicitly configure a selector event loop, although doing so may improve performance. This does not change the fact that Tornado is significantly less scalable on Windows than on other platforms. - Binary wheels are now provided for Windows, MacOS, and Linux (amd64 and arm64). `tornado.gen` ~~~~~~~~~~~~~ - `.coroutine` now has better support for the Python 3.7+ ``contextvars`` module. In particular, the ``ContextVar.reset`` method is now supported. `tornado.http1connection` ~~~~~~~~~~~~~~~~~~~~~~~~~ - ``HEAD`` requests to handlers that used chunked encoding no longer produce malformed output. - Certain kinds of malformed ``gzip`` data no longer cause an infinite loop. `tornado.httpclient` ~~~~~~~~~~~~~~~~~~~~ - Setting ``decompress_response=False`` now works correctly with ``curl_httpclient``. - Mixing requests with and without proxies works correctly in ``curl_httpclient`` (assuming the version of pycurl is recent enough). - A default ``User-Agent`` of ``Tornado/$VERSION`` is now used if the ``user_agent`` parameter is not specified. - After a 303 redirect, ``tornado.simple_httpclient`` always uses ``GET``. Previously this would use ``GET`` if the original request was a ``POST`` and would otherwise reuse the original request method. For ``curl_httpclient``, the behavior depends on the version of ``libcurl`` (with the most recent versions using ``GET`` after 303 regardless of the original method). - Setting ``request_timeout`` and/or ``connect_timeout`` to zero is now supported to disable the timeout. `tornado.httputil` ~~~~~~~~~~~~~~~~~~ - Header parsing is now faster. - `.parse_body_arguments` now accepts incompletely-escaped non-ASCII inputs. `tornado.iostream` ~~~~~~~~~~~~~~~~~~ - `ssl.CertificateError` during the SSL handshake is now handled correctly. - Reads that are resolved while the stream is closing are now handled correctly. `tornado.log` ~~~~~~~~~~~~~ - When colored logging is enabled, ``logging.CRITICAL`` messages are now recognized and colored magenta. `tornado.netutil` ~~~~~~~~~~~~~~~~~ - ``EADDRNOTAVAIL`` is now ignored when binding to ``localhost`` with IPv6. This error is common in docker. `tornado.platform.asyncio` ~~~~~~~~~~~~~~~~~~~~~~~~~~ - `.AnyThreadEventLoopPolicy` now also configures a selector event loop for these threads (the proactor event loop only works on the main thread) ``tornado.platform.auto`` ~~~~~~~~~~~~~~~~~~~~~~~~~ - The ``set_close_exec`` function has been removed. `tornado.testing` ~~~~~~~~~~~~~~~~~ - `.ExpectLog` now has a ``level`` argument to ensure that the given log level is enabled. `tornado.web` ~~~~~~~~~~~~~ - ``RedirectHandler.get`` now accepts keyword arguments. - When sending 304 responses, more headers (including ``Allow``) are now preserved. - ``reverse_url`` correctly handles escaped characters in the regex route. - Default ``Etag`` headers are now generated with SHA-512 instead of MD5. `tornado.websocket` ~~~~~~~~~~~~~~~~~~~ - The ``ping_interval`` timer is now stopped when the connection is closed. - `.websocket_connect` now raises an error when it encounters a redirect instead of hanging.
2047e7a
2020-10-31 01:44
下载
v6.1.0b2
bee08e2
2020-10-25 08:49
下载
v6.1.0b1
What's new in Tornado 6.1.0 Oct X, 2020 ----------- General changes ~~~~~~~~~~~~~~~ - Windows support has been improved. Tornado is now compatible with the proactor event loop (which became the default in Python 3.8) by automatically falling back to running a selector in a second thread. This means that it is no longer necessary to explicitly configure a selector event loop, although doing so may improve performance. This does not change the fact that Tornado is significantly less scalable on Windows than on other platforms. - Binary wheels are now provided for Windows, MacOS, and Linux (amd64 and arm64). `tornado.http1connection` ~~~~~~~~~~~~~~~~~~~~~~~~~ - ``HEAD`` requests to handlers that used chunked encoding no longer produce malformed output. - Certain kinds of malformed ``gzip`` data no longer cause an infinite loop. `tornado.httpclient` ~~~~~~~~~~~~~~~~~~~~ - Setting ``decompress_response=False`` now works correctly with ``curl_httpclient``. - Mixing requests with and without proxies works correctly in ``curl_httpclient`` (assuming the version of pycurl is recent enough). - A default ``User-Agent`` of ``Tornado/$VERSION`` is now used if the ``user_agent`` parameter is not specified. - After a 303 redirect, ``tornado.simple_httpclient`` always uses ``GET``. Previously this would use ``GET`` if the original request was a ``POST`` and would otherwise reuse the original request method. For ``curl_httpclient``, the behavior depends on the version of ``libcurl`` (with the most recent versions using ``GET`` after 303 regardless of the original method). - Setting ``request_timeout`` and/or ``connect_timeout`` to zero is now supported to disable the timeout. `tornado.httputil` ~~~~~~~~~~~~~~~~~~ - Header parsing is now faster. - `.parse_body_arguments` now accepts incompletely-escaped non-ASCII inputs. `tornado.iostream` ~~~~~~~~~~~~~~~~~~ - `ssl.CertificateError` during the SSL handshake is now handled correctly. - Reads that are resolved while the stream is closing are now handled correctly. `tornado.log` ~~~~~~~~~~~~~ - When colored logging is enabled, ``logging.CRITICAL`` messages are now recognized and colored magenta. `tornado.netutil` ~~~~~~~~~~~~~~~~~ - ``EADDRNOTAVAIL`` is now ignored when binding to ``localhost`` with IPv6. This error is common in docker. `tornado.platform.asyncio` ~~~~~~~~~~~~~~~~~~~~~~~~~~ - `.AnyThreadEventLoopPolicy` now also configures a selector event loop for these threads (the proactor event loop only works on the main thread) ``tornado.platform.auto`` ~~~~~~~~~~~~~~~~~~~~~~~~~ - The ``set_close_exec`` function has been removed. `tornado.testing` ~~~~~~~~~~~~~~~~~ - `.ExpectLog` now has a ``level`` argument to ensure that the given log level is enabled. `tornado.web` ~~~~~~~~~~~~~ - ``RedirectHandler.get`` now accepts keyword arguments. - When sending 304 responses, more headers (including ``Allow``) are now preserved. - ``reverse_url`` correctly handles escaped characters in the regex route. - Default ``Etag`` headers are now generated with SHA-512 instead of MD5. `tornado.websocket` ~~~~~~~~~~~~~~~~~~~ - The ``ping_interval`` timer is now stopped when the connection is closed. - `.websocket_connect` now raises an error when it encounters a redirect instead of hanging.
69e750e
2020-09-30 19:15
下载
v6.0.4
What's new in Tornado 6.0.4 Mar 3, 2020 ----------- General changes ~~~~~~~~~~~~~~~ - Binary wheels are now available for Python 3.8 on Windows. Note that it is still necessary to use ``asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())`` for this platform/version. Bug fixes ~~~~~~~~~ - Fixed an issue in `.IOStream` (introduced in 6.0.0) that resulted in ``StreamClosedError`` being incorrectly raised if a stream is closed mid-read but there is enough buffered data to satisfy the read. - `.AnyThreadEventLoopPolicy` now always uses the selector event loop on Windows.
b4e39e5
2020-03-04 10:11
下载
v6.0.3
What's new in Tornado 6.0.3 Jun 22, 2019 ------------ Bug fixes ~~~~~~~~~ - `.gen.with_timeout` always treats ``asyncio.CancelledError`` as a ``quiet_exception`` (this improves compatibility with Python 3.8, which changed ``CancelledError`` to a ``BaseException``). - ``IOStream`` now checks for closed streams earlier, avoiding spurious logged errors in some situations (mainly with websockets).
a36d05d
2019-06-24 06:12
下载
v6.0.2
What's new in Tornado 6.0.2 Mar 23, 2019 ------------ Bug fixes ~~~~~~~~~ - `.WebSocketHandler.set_nodelay` works again. - Accessing ``HTTPResponse.body`` now returns an empty byte string instead of raising ``ValueError`` for error responses that don't have a body (it returned None in this case in Tornado 5).
442a812
2019-03-24 00:36
下载
v6.0.1
What's new in Tornado 6.0.1 Mar 3, 2019 ----------- Bug fixes ~~~~~~~~~ - Fixed issues with type annotations that caused errors while importing Tornado on Python 3.5.2.
c9dad2a
2019-03-04 00:59
下载
v6.0.0
What's new in Tornado 6.0 Mar 1, 2019 ----------- Backwards-incompatible changes ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Python 2.7 and 3.4 are no longer supported; the minimum supported Python version is 3.5.2. - APIs deprecated in Tornado 5.1 have been removed. This includes the ``tornado.stack_context`` module and most ``callback`` arguments throughout the package. All removed APIs emitted `DeprecationWarning` when used in Tornado 5.1, so running your application with the ``-Wd`` Python command-line flag or the environment variable ``PYTHONWARNINGS=d`` should tell you whether your application is ready to move to Tornado 6.0. - ``.WebSocketHandler.get`` is now a coroutine and must be called accordingly in any subclasses that override this method (but note that overriding ``get`` is not recommended; either ``prepare`` or ``open`` should be used instead). General changes ~~~~~~~~~~~~~~~ - Tornado now includes type annotations compatible with ``mypy``. These annotations will be used when type-checking your application with ``mypy``, and may be usable in editors and other tools. - Tornado now uses native coroutines internally, improving performance. `tornado.auth` ~~~~~~~~~~~~~~ - All ``callback`` arguments in this package have been removed. Use the coroutine interfaces instead. - The ``OAuthMixin._oauth_get_user`` method has been removed. Override `~.OAuthMixin._oauth_get_user_future` instead. `tornado.concurrent` ~~~~~~~~~~~~~~~~~~~~ - The ``callback`` argument to `.run_on_executor` has been removed. - ``return_future`` has been removed. `tornado.gen` ~~~~~~~~~~~~~ - Some older portions of this module have been removed. This includes ``engine``, ``YieldPoint``, ``Callback``, ``Wait``, ``WaitAll``, ``MultiYieldPoint``, and ``Task``. - Functions decorated with ``@gen.coroutine`` no longer accept ``callback`` arguments. `tornado.httpclient` ~~~~~~~~~~~~~~~~~~~~ - The behavior of ``raise_error=False`` has changed. Now only suppresses the errors raised due to completed responses with non-200 status codes (previously it suppressed all errors). - The ``callback`` argument to `.AsyncHTTPClient.fetch` has been removed. `tornado.httputil` ~~~~~~~~~~~~~~~~~~ - ``HTTPServerRequest.write`` has been removed. Use the methods of ``request.connection`` instead. - Unrecognized ``Content-Encoding`` values now log warnings only for content types that we would otherwise attempt to parse. `tornado.ioloop` ~~~~~~~~~~~~~~~~ - ``IOLoop.set_blocking_signal_threshold``, ``IOLoop.set_blocking_log_threshold``, ``IOLoop.log_stack``, and ``IOLoop.handle_callback_exception`` have been removed. - Improved performance of `.IOLoop.add_callback`. `tornado.iostream` ~~~~~~~~~~~~~~~~~~ - All ``callback`` arguments in this module have been removed except for `.BaseIOStream.set_close_callback`. - ``streaming_callback`` arguments to `.BaseIOStream.read_bytes` and `.BaseIOStream.read_until_close` have been removed. - Eliminated unnecessary logging of "Errno 0". `tornado.log` ~~~~~~~~~~~~~ - Log files opened by this module are now explicitly set to UTF-8 encoding. `tornado.netutil` ~~~~~~~~~~~~~~~~~ - The results of ``getaddrinfo`` are now sorted by address family to avoid partial failures and deadlocks. `tornado.platform.twisted` ~~~~~~~~~~~~~~~~~~~~~~~~~~ - ``TornadoReactor`` and ``TwistedIOLoop`` have been removed. ``tornado.simple_httpclient`` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - The default HTTP client now supports the ``network_interface`` request argument to specify the source IP for the connection. - If a server returns a 3xx response code without a ``Location`` header, the response is raised or returned directly instead of trying and failing to follow the redirect. - When following redirects, methods other than ``POST`` will no longer be transformed into ``GET`` requests. 301 (permanent) redirects are now treated the same way as 302 (temporary) and 303 (see other) redirects in this respect. - Following redirects now works with ``body_producer``. ``tornado.stack_context`` ~~~~~~~~~~~~~~~~~~~~~~~~~ - The ``tornado.stack_context`` module has been removed. `tornado.tcpserver` ~~~~~~~~~~~~~~~~~~~ - `.TCPServer.start` now supports a ``max_restarts`` argument (same as `.fork_processes`). `tornado.testing` ~~~~~~~~~~~~~~~~~ - `.AsyncHTTPTestCase` now drops all references to the `.Application` during ``tearDown``, allowing its memory to be reclaimed sooner. - `.AsyncTestCase` now cancels all pending coroutines in ``tearDown``, in an effort to reduce warnings from the python runtime about coroutines that were not awaited. Note that this may cause ``asyncio.CancelledError`` to be logged in other places. Coroutines that expect to be running at test shutdown may need to catch this exception. `tornado.web` ~~~~~~~~~~~~~ - The ``asynchronous`` decorator has been removed. - The ``callback`` argument to `.RequestHandler.flush` has been removed. - `.StaticFileHandler` now supports large negative values for the ``Range`` header and returns an appropriate error for ``end > start``. - It is now possible to set ``expires_days`` in ``xsrf_cookie_kwargs``. `tornado.websocket` ~~~~~~~~~~~~~~~~~~~ - Pings and other messages sent while the connection is closing are now silently dropped instead of logging exceptions. - Errors raised by ``open()`` are now caught correctly when this method is a coroutine. `tornado.wsgi` ~~~~~~~~~~~~~~ - ``WSGIApplication`` and ``WSGIAdapter`` have been removed.
3c8728d
2019-03-01 23:11
下载
v6.0.0b1
4f1ebe4
2019-02-11 07:08
下载
v5.1.1
What's new in Tornado 5.1.1 Sep 16, 2018 ------------ Bug fixes ~~~~~~~~~ - Fixed an case in which the `.Future` returned by `.RequestHandler.finish` could fail to resolve. - The `.TwitterMixin.authenticate_redirect` method works again. - Improved error handling in the `tornado.auth` module, fixing hanging requests when a network or other error occurs.
cc2cf07
2018-09-17 02:53
下载
v5.1.0
What's new in Tornado 5.1 July 12, 2018 ------------- Deprecation notice ~~~~~~~~~~~~~~~~~~ - Tornado 6.0 will drop support for Python 2.7 and 3.4. The minimum supported Python version will be 3.5.2. - The `tornado.stack_context` module is deprecated and will be removed in Tornado 6.0. The reason for this is that it is not feasible to provide this module's semantics in the presence of ``async def`` native coroutines. `.ExceptionStackContext` is mainly obsolete thanks to coroutines. `.StackContext` lacks a direct replacement although the new ``contextvars`` package (in the Python standard library beginning in Python 3.7) may be an alternative. - Callback-oriented code often relies on `.ExceptionStackContext` to handle errors and prevent leaked connections. In order to avoid the risk of silently introducing subtle leaks (and to consolidate all of Tornado's interfaces behind the coroutine pattern), ``callback`` arguments throughout the package are deprecated and will be removed in version 6.0. All functions that had a ``callback`` argument removed now return a `.Future` which should be used instead. - Where possible, deprecation warnings are emitted when any of these deprecated interfaces is used. However, Python does not display deprecation warnings by default. To prepare your application for Tornado 6.0, run Python with the ``-Wd`` argument or set the environment variable ``PYTHONWARNINGS`` to ``d``. If your application runs on Python 3 without deprecation warnings, it should be able to move to Tornado 6.0 without disruption. `tornado.auth` ~~~~~~~~~~~~~~ - `.OAuthMixin._oauth_get_user_future` may now be a native coroutine. - All ``callback`` arguments in this package are deprecated and will be removed in 6.0. Use the coroutine interfaces instead. - The ``OAuthMixin._oauth_get_user`` method is deprecated and will be removed in 6.0. Override `~.OAuthMixin._oauth_get_user_future` instead. `tornado.autoreload` ~~~~~~~~~~~~~~~~~~~~ - The command-line autoreload wrapper is now preserved if an internal autoreload fires. - The command-line wrapper no longer starts duplicated processes on windows when combined with internal autoreload. `tornado.concurrent` ~~~~~~~~~~~~~~~~~~~~ - `.run_on_executor` now returns `.Future` objects that are compatible with ``await``. - The ``callback`` argument to `.run_on_executor` is deprecated and will be removed in 6.0. - `.return_future` is deprecated and will be removed in 6.0. `tornado.gen` ~~~~~~~~~~~~~ - Some older portions of this module are deprecated and will be removed in 6.0. This includes `.engine`, `.YieldPoint`, `.Callback`, `.Wait`, `.WaitAll`, `.MultiYieldPoint`, and `.Task`. - Functions decorated with ``@gen.coroutine`` will no longer accept ``callback`` arguments in 6.0. `tornado.httpclient` ~~~~~~~~~~~~~~~~~~~~ - The behavior of ``raise_error=False`` is changing in 6.0. Currently it suppresses all errors; in 6.0 it will only suppress the errors raised due to completed responses with non-200 status codes. - The ``callback`` argument to `.AsyncHTTPClient.fetch` is deprecated and will be removed in 6.0. - `tornado.httpclient.HTTPError` has been renamed to `.HTTPClientError` to avoid ambiguity in code that also has to deal with `tornado.web.HTTPError`. The old name remains as an alias. - ``tornado.curl_httpclient`` now supports non-ASCII characters in username and password arguments. - ``.HTTPResponse.request_time`` now behaves consistently across ``simple_httpclient`` and ``curl_httpclient``, excluding time spent in the ``max_clients`` queue in both cases (previously this time was included in ``simple_httpclient`` but excluded in ``curl_httpclient``). In both cases the time is now computed using a monotonic clock where available. - `.HTTPResponse` now has a ``start_time`` attribute recording a wall-clock (`time.time`) timestamp at which the request started (after leaving the ``max_clients`` queue if applicable). `tornado.httputil` ~~~~~~~~~~~~~~~~~~ - `.parse_multipart_form_data` now recognizes non-ASCII filenames in RFC 2231/5987 (``filename*=``) format. - `.HTTPServerRequest.write` is deprecated and will be removed in 6.0. Use the methods of ``request.connection`` instead. - Malformed HTTP headers are now logged less noisily. `tornado.ioloop` ~~~~~~~~~~~~~~~~ - `.PeriodicCallback` now supports a ``jitter`` argument to randomly vary the timeout. - `.IOLoop.set_blocking_signal_threshold`, `~.IOLoop.set_blocking_log_threshold`, `~.IOLoop.log_stack`, and `.IOLoop.handle_callback_exception` are deprecated and will be removed in 6.0. - Fixed a `KeyError` in `.IOLoop.close` when `.IOLoop` objects are being opened and closed in multiple threads. `tornado.iostream` ~~~~~~~~~~~~~~~~~~ - All ``callback`` arguments in this module are deprecated except for `.BaseIOStream.set_close_callback`. They will be removed in 6.0. - ``streaming_callback`` arguments to `.BaseIOStream.read_bytes` and `.BaseIOStream.read_until_close` are deprecated and will be removed in 6.0. `tornado.netutil` ~~~~~~~~~~~~~~~~~ - Improved compatibility with GNU Hurd. `tornado.options` ~~~~~~~~~~~~~~~~~ - `tornado.options.parse_config_file` now allows setting options to strings (which will be parsed the same way as `tornado.options.parse_command_line`) in addition to the specified type for the option. `tornado.platform.twisted` ~~~~~~~~~~~~~~~~~~~~~~~~~~ - `.TornadoReactor` and `.TwistedIOLoop` are deprecated and will be removed in 6.0. Instead, Tornado will always use the asyncio event loop and twisted can be configured to do so as well. `tornado.stack_context` ~~~~~~~~~~~~~~~~~~~~~~~ - The `tornado.stack_context` module is deprecated and will be removed in 6.0. `tornado.testing` ~~~~~~~~~~~~~~~~~ - `.AsyncHTTPTestCase.fetch` now takes a ``raise_error`` argument. This argument has the same semantics as `.AsyncHTTPClient.fetch`, but defaults to false because tests often need to deal with non-200 responses (and for backwards-compatibility). - The `.AsyncTestCase.stop` and `.AsyncTestCase.wait` methods are deprecated. `tornado.web` ~~~~~~~~~~~~~ - New method `.RequestHandler.detach` can be used from methods that are not decorated with ``@asynchronous`` (the decorator was required to use ``self.request.connection.detach()``. - `.RequestHandler.finish` and `.RequestHandler.render` now return ``Futures`` that can be used to wait for the last part of the response to be sent to the client. - `.FallbackHandler` now calls ``on_finish`` for the benefit of subclasses that may have overridden it. - The `.asynchronous` decorator is deprecated and will be removed in 6.0. - The ``callback`` argument to `.RequestHandler.flush` is deprecated and will be removed in 6.0. `tornado.websocket` ~~~~~~~~~~~~~~~~~~~ - When compression is enabled, memory limits now apply to the post-decompression size of the data, protecting against DoS attacks. - `.websocket_connect` now supports subprotocols. - `.WebSocketHandler` and `.WebSocketClientConnection` now have ``selected_subprotocol`` attributes to see the subprotocol in use. - The `.WebSocketHandler.select_subprotocol` method is now called with an empty list instead of a list containing an empty string if no subprotocols were requested by the client. - `.WebSocketHandler.open` may now be a coroutine. - The ``data`` argument to `.WebSocketHandler.ping` is now optional. - Client-side websocket connections no longer buffer more than one message in memory at a time. - Exception logging now uses `.RequestHandler.log_exception`. `tornado.wsgi` ~~~~~~~~~~~~~~ - `.WSGIApplication` and `.WSGIAdapter` are deprecated and will be removed in Tornado 6.0.
c890f84
2018-07-11 21:25
下载
v5.1.0b1
9470c80
2018-06-11 11:25
下载
v5.0.2
What's new in Tornado 5.0.1 Apr 7, 2018 ----------- Bug fixes ~~~~~~~~~ - Fixed a memory leak when `.IOLoop` objects are created and destroyed. - If `.AsyncTestCase.get_new_ioloop` returns a reference to a preexisting event loop (typically when it has been overridden to return `.IOLoop.current()`), the test's ``tearDown`` method will not close this loop. - Fixed a confusing error message when the synchronous `.HTTPClient` fails to initialize because an event loop is already running. - `.PeriodicCallback` no longer executes twice in a row due to backwards clock adjustments.
4fb847b
2018-04-08 08:30
下载
v5.0.1
What's new in Tornado 5.0.1 Mar 18, 2018 ------------ Bug fix ~~~~~~~ - This release restores support for versions of Python 3.4 prior to 3.4.4. This is important for compatibility with Debian Jessie which has 3.4.2 as its version of Python 3.
b758925
2018-03-18 23:39
下载
v5.0.0
What's new in Tornado 5.0 Mar 5, 2018 ----------- Highlights ~~~~~~~~~~ - The focus of this release is improving integration with `asyncio`. On Python 3, the `.IOLoop` is always a wrapper around the `asyncio` event loop, and `asyncio.Future` and `asyncio.Task` are used instead of their Tornado counterparts. This means that libraries based on `asyncio` can be mixed relatively seamlessly with those using Tornado. While care has been taken to minimize the disruption from this change, code changes may be required for compatibility with Tornado 5.0, as detailed in the following section. - Tornado 5.0 supports Python 2.7.9+ and 3.4+. Python 2.7 and 3.4 are deprecated and support for them will be removed in Tornado 6.0, which will require Python 3.5+. Backwards-compatibility notes ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Python 3.3 is no longer supported. - Versions of Python 2.7 that predate the `ssl` module update are no longer supported. (The `ssl` module was updated in version 2.7.9, although in some distributions the updates are present in builds with a lower version number. Tornado requires `ssl.SSLContext`, `ssl.create_default_context`, and `ssl.match_hostname`) - Versions of Python 3.5 prior to 3.5.2 are no longer supported due to a change in the async iterator protocol in that version. - The ``trollius`` project (`asyncio` backported to Python 2) is no longer supported. - `tornado.concurrent.Future` is now an alias for `asyncio.Future` when running on Python 3. This results in a number of minor behavioral changes: - `.Future` objects can only be created while there is a current `.IOLoop` - The timing of callbacks scheduled with ``Future.add_done_callback`` has changed. `tornado.concurrent.future_add_done_callback` can be used to make the behavior more like older versions of Tornado (but not identical). Some of these changes are also present in the Python 2 version of `tornado.concurrent.Future` to minimize the difference between Python 2 and 3. - Cancellation is now partially supported, via `asyncio.Future.cancel`. A canceled `.Future` can no longer have its result set. Applications that handle `~asyncio.Future` objects directly may want to use `tornado.concurrent.future_set_result_unless_cancelled`. In native coroutines, cancellation will cause an exception to be raised in the coroutine. - The ``exc_info`` and ``set_exc_info`` methods are no longer present. Use `tornado.concurrent.future_set_exc_info` to replace the latter, and raise the exception with `~asyncio.Future.result` to replace the former. - ``io_loop`` arguments to many Tornado functions have been removed. Use `.IOLoop.current()` instead of passing `.IOLoop` objects explicitly. - On Python 3, `.IOLoop` is always a wrapper around the `asyncio` event loop. ``IOLoop.configure`` is effectively removed on Python 3 (for compatibility, it may be called to redundantly specify the `asyncio`-backed `.IOLoop`) - `.IOLoop.instance` is now a deprecated alias for `.IOLoop.current`. Applications that need the cross-thread communication behavior facilitated by `.IOLoop.instance` should use their own global variable instead. Other notes ~~~~~~~~~~~ - The ``futures`` (`concurrent.futures` backport) package is now required on Python 2.7. - The ``certifi`` and ``backports.ssl-match-hostname`` packages are no longer required on Python 2.7. - Python 3.6 or higher is recommended, because it features more efficient garbage collection of `asyncio.Future` objects. `tornado.auth` ~~~~~~~~~~~~~~ - `.GoogleOAuth2Mixin` now uses a newer set of URLs. `tornado.autoreload` ~~~~~~~~~~~~~~~~~~~~ - On Python 3, uses ``__main__.__spec`` to more reliably reconstruct the original command line and avoid modifying ``PYTHONPATH``. - The ``io_loop`` argument to `tornado.autoreload.start` has been removed. `tornado.concurrent` ~~~~~~~~~~~~~~~~~~~~ - `tornado.concurrent.Future` is now an alias for `asyncio.Future` when running on Python 3. See "Backwards-compatibility notes" for more. - Setting the result of a ``Future`` no longer blocks while callbacks are being run. Instead, the callbacks are scheduled on the next `.IOLoop` iteration. - The deprecated alias ``tornado.concurrent.TracebackFuture`` has been removed. - `tornado.concurrent.chain_future` now works with all three kinds of ``Futures`` (Tornado, `asyncio`, and `concurrent.futures`) - The ``io_loop`` argument to `tornado.concurrent.run_on_executor` has been removed. - New functions `.future_set_result_unless_cancelled`, `.future_set_exc_info`, and `.future_add_done_callback` help mask the difference between `asyncio.Future` and Tornado's previous ``Future`` implementation. `tornado.curl_httpclient` ~~~~~~~~~~~~~~~~~~~~~~~~~ - Improved debug logging on Python 3. - The ``time_info`` response attribute now includes ``appconnect`` in addition to other measurements. - Closing a `.CurlAsyncHTTPClient` now breaks circular references that could delay garbage collection. - The ``io_loop`` argument to the `.CurlAsyncHTTPClient` constructor has been removed. `tornado.gen` ~~~~~~~~~~~~~ - ``tornado.gen.TimeoutError`` is now an alias for `tornado.util.TimeoutError`. - Leak detection for ``Futures`` created by this module now attributes them to their proper caller instead of the coroutine machinery. - Several circular references that could delay garbage collection have been broken up. - On Python 3, `asyncio.Task` is used instead of the Tornado coroutine runner. This improves compatibility with some `asyncio` libraries and adds support for cancellation. - The ``io_loop`` arguments to ``YieldFuture`` and `.with_timeout` have been removed. `tornado.httpclient` ~~~~~~~~~~~~~~~~~~~~ - The ``io_loop`` argument to all `.AsyncHTTPClient` constructors has been removed. `tornado.httpserver` ~~~~~~~~~~~~~~~~~~~~ - It is now possible for a client to reuse a connection after sending a chunked request. - If a client sends a malformed request, the server now responds with a 400 error instead of simply closing the connection. - ``Content-Length`` and ``Transfer-Encoding`` headers are no longer sent with 1xx or 204 responses (this was already true of 304 responses). - When closing a connection to a HTTP/1.1 client, the ``Connection: close`` header is sent with the response. - The ``io_loop`` argument to the `.HTTPServer` constructor has been removed. - If more than one ``X-Scheme`` or ``X-Forwarded-Proto`` header is present, only the last is used. `tornado.httputil` ~~~~~~~~~~~~~~~~~~ - The string representation of `.HTTPServerRequest` objects (which are sometimes used in log messages) no longer includes the request headers. - New function `.qs_to_qsl` converts the result of `urllib.parse.parse_qs` to name-value pairs. `tornado.ioloop` ~~~~~~~~~~~~~~~~ - ``tornado.ioloop.TimeoutError`` is now an alias for `tornado.util.TimeoutError`. - `.IOLoop.instance` is now a deprecated alias for `.IOLoop.current`. - `.IOLoop.install` and `.IOLoop.clear_instance` are deprecated. - ``IOLoop.initialized`` has been removed. - On Python 3, the `asyncio`-backed `.IOLoop` is always used and alternative `.IOLoop` implementations cannot be configured. `.IOLoop.current` and related methods pass through to `asyncio.get_event_loop`. - `~.IOLoop.run_sync` cancels its argument on a timeout. This results in better stack traces (and avoids log messages about leaks) in native coroutines. - New methods `.IOLoop.run_in_executor` and `.IOLoop.set_default_executor` make it easier to run functions in other threads from native coroutines (since `concurrent.futures.Future` does not support ``await``). - ``PollIOLoop`` (the default on Python 2) attempts to detect misuse of `.IOLoop` instances across `os.fork`. - The ``io_loop`` argument to `.PeriodicCallback` has been removed. - It is now possible to create a `.PeriodicCallback` in one thread and start it in another without passing an explicit event loop. - The `.IOLoop.set_blocking_signal_threshold` and `.IOLoop.set_blocking_log_threshold` methods are deprecated because they are not implemented for the `asyncio` event loop`. Use the ``PYTHONASYNCIODEBUG=1`` environment variable instead. - `.IOLoop.clear_current` now works if it is called before any current loop is established. - The ``IOLoop.initialized`` method has been removed. `tornado.iostream` ~~~~~~~~~~~~~~~~~~ - The ``io_loop`` argument to the `.IOStream` constructor has been removed. - New method `.BaseIOStream.read_into` provides a minimal-copy alternative to `.BaseIOStream.read_bytes`. - `.BaseIOStream.write` is now much more efficient for very large amounts of data. - Fixed some cases in which ``IOStream.error`` could be inaccurate. - Writing a `memoryview` can no longer result in "BufferError: Existing exports of data: object cannot be re-sized". `tornado.locks` ~~~~~~~~~~~~~~~ - As a side effect of the ``Future`` changes, waiters are always notified asynchronously with respect to `.Condition.notify`. `tornado.netutil` ~~~~~~~~~~~~~~~~~ - The default `.Resolver` now uses `.IOLoop.run_in_executor`. `.ExecutorResolver`, `.BlockingResolver`, and `.ThreadedResolver` are deprecated. - The ``io_loop`` arguments to `.add_accept_handler`, `.ExecutorResolver`, and `.ThreadedResolver` have been removed. - `.add_accept_handler` returns a callable which can be used to remove all handlers that were added. - `.OverrideResolver` now accepts per-family overrides. `tornado.options` ~~~~~~~~~~~~~~~~~ - Duplicate option names are now detected properly whether they use hyphens or underscores. `tornado.platform.asyncio` ~~~~~~~~~~~~~~~~~~~~~~~~~~ - `.AsyncIOLoop` and `.AsyncIOMainLoop` are now used automatically when appropriate; referencing them explicitly is no longer recommended. - Starting an `.IOLoop` or making it current now also sets the `asyncio` event loop for the current thread. Closing an `.IOLoop` closes the corresponding `asyncio` event loop. - `.to_tornado_future` and `.to_asyncio_future` are deprecated since they are now no-ops. - `~.AnyThreadEventLoopPolicy` can now be used to easily allow the creation of event loops on any thread (similar to Tornado's prior policy). `tornado.platform.caresresolver` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - The ``io_loop`` argument to `.CaresResolver` has been removed. `tornado.platform.twisted` ~~~~~~~~~~~~~~~~~~~~~~~~~~ - The ``io_loop`` arguments to `.TornadoReactor`, `.TwistedResolver`, and `tornado.platform.twisted.install` have been removed. `tornado.process` ~~~~~~~~~~~~~~~~~ - The ``io_loop`` argument to the `.Subprocess` constructor and `.Subprocess.initialize` has been removed. `tornado.routing` ~~~~~~~~~~~~~~~~~ - A default 404 response is now generated if no delegate is found for a request. `tornado.simple_httpclient` ~~~~~~~~~~~~~~~~~~~~~~~~~~~ - The ``io_loop`` argument to `.SimpleAsyncHTTPClient` has been removed. - TLS is now configured according to `ssl.create_default_context` by default. `tornado.tcpclient` ~~~~~~~~~~~~~~~~~~~ - The ``io_loop`` argument to the `.TCPClient` constructor has been removed. - `.TCPClient.connect` has a new ``timeout`` argument. `tornado.tcpserver` ~~~~~~~~~~~~~~~~~~~ - The ``io_loop`` argument to the `.TCPServer` constructor has been removed. - `.TCPServer` no longer logs ``EBADF`` errors during shutdown. `tornado.testing` ~~~~~~~~~~~~~~~~~ - The deprecated ``tornado.testing.get_unused_port`` and ``tornado.testing.LogTrapTestCase`` have been removed. - `.AsyncHTTPTestCase.fetch` now supports absolute URLs. - `.AsyncHTTPTestCase.fetch` now connects to ``127.0.0.1`` instead of ``localhost`` to be more robust against faulty ipv6 configurations. `tornado.util` ~~~~~~~~~~~~~~ - `tornado.util.TimeoutError` replaces ``tornado.gen.TimeoutError`` and ``tornado.ioloop.TimeoutError``. - `.Configurable` now supports configuration at multiple levels of an inheritance hierarchy. `tornado.web` ~~~~~~~~~~~~~ - `.RequestHandler.set_status` no longer requires that the given status code appear in `http.client.responses`. - It is no longer allowed to send a body with 1xx or 204 responses. - Exception handling now breaks up reference cycles that could delay garbage collection. - `.RedirectHandler` now copies any query arguments from the request to the redirect location. - If both ``If-None-Match`` and ``If-Modified-Since`` headers are present in a request to `.StaticFileHandler`, the latter is now ignored. `tornado.websocket` ~~~~~~~~~~~~~~~~~~~ - The C accelerator now operates on multiple bytes at a time to improve performance. - Requests with invalid websocket headers now get a response with status code 400 instead of a closed connection. - `.WebSocketHandler.write_message` now raises `.WebSocketClosedError` if the connection closes while the write is in progress. - The ``io_loop`` argument to `.websocket_connect` has been removed.
3fc6aec
2018-03-05 21:39
下载
v4.5.3
What's new in Tornado 4.5.3 Jan 6, 2018 ------------ `tornado.curl_httpclient` ~~~~~~~~~~~~~~~~~~~~~~~~~ - Improved debug logging on Python 3. `tornado.httpserver` ~~~~~~~~~~~~~~~~~~~~ - ``Content-Length`` and ``Transfer-Encoding`` headers are no longer sent with 1xx or 204 responses (this was already true of 304 responses). - Reading chunked requests no longer leaves the connection in a broken state. `tornado.iostream` ~~~~~~~~~~~~~~~~~~ - Writing a `memoryview` can no longer result in "BufferError: Existing exports of data: object cannot be re-sized". `tornado.options` ~~~~~~~~~~~~~~~~~ - Duplicate option names are now detected properly whether they use hyphens or underscores. `tornado.testing` ~~~~~~~~~~~~~~~~~ - `.AsyncHTTPTestCase.fetch` now uses ``127.0.0.1`` instead of ``localhost``, improving compatibility with systems that have partially-working ipv6 stacks. `tornado.web` ~~~~~~~~~~~~~ - It is no longer allowed to send a body with 1xx or 204 responses. `tornado.websocket` ~~~~~~~~~~~~~~~~~~~ - Requests with invalid websocket headers now get a response with status code 400 instead of a closed connection.
8e9e755
2018-01-07 01:48
下载
v4.5.2
What's new in Tornado 4.5.2 Aug 27, 2017 ------------ Bug Fixes ~~~~~~~~~ - Tornado now sets the ``FD_CLOEXEC`` flag on all file descriptors it creates. This prevents hanging client connections and resource leaks when the `tornado.autoreload` module (or ``Application(debug=True)``) is used.
810c341
2017-08-28 02:50
下载
v4.5.1
What's new in Tornado 4.5 Apr 16, 2017 ------------ `tornado.log` ~~~~~~~~~~~~~ - Improved detection of libraries for colorized logging. `tornado.httputil` ~~~~~~~~~~~~~~~~~~ - `.url_concat` once again treats None as equivalent to an empty sequence.
e4f26ac
2017-04-20 21:32
下载
v4.5.0
What's new in Tornado 4.5 Apr 16, 2017 ------------ Backwards-compatibility warning ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - The `tornado.websocket` module now imposes a limit on the size of incoming messages, which defaults to 10MiB. New module ~~~~~~~~~~ - `tornado.routing` provides a more flexible routing system than the one built in to `.Application`. General changes ~~~~~~~~~~~~~~~ - Reduced the number of circular references, reducing memory usage and improving performance. `tornado.auth` ~~~~~~~~~~~~~~ * The `tornado.auth` module has been updated for compatibility with `a change to Facebook's access_token endpoint <https://github.com/tornadoweb/tornado/pull/1977>`_. This includes both the changes initially released in Tornado 4.4.3 and an additional change to support the ```session_expires`` field in the new format. The ``session_expires`` field is currently a string; it should be accessed as ``int(user['session_expires'])`` because it will change from a string to an int in Tornado 5.0. `tornado.autoreload` ~~~~~~~~~~~~~~~~~~~~ - Autoreload is now compatible with the `asyncio` event loop. - Autoreload no longer attempts to close the `.IOLoop` and all registered file descriptors before restarting; it relies on the ``CLOEXEC`` flag being set instead. `tornado.concurrent` ~~~~~~~~~~~~~~~~~~~~ - Suppressed some "'NoneType' object not callback" messages that could be logged at shutdown. `tornado.gen` ~~~~~~~~~~~~~ - ``yield None`` is now equivalent to ``yield gen.moment``. `~tornado.gen.moment` is deprecated. This improves compatibility with `asyncio`. - Fixed an issue in which a generator object could be garbage collected prematurely (most often when weak references are used. - New function `.is_coroutine_function` identifies functions wrapped by `.coroutine` or `.engine`. ``tornado.http1connection`` ~~~~~~~~~~~~~~~~~~~~~~~~~~~ - The ``Transfer-Encoding`` header is now parsed case-insensitively. `tornado.httpclient` ~~~~~~~~~~~~~~~~~~~~ - ``SimpleAsyncHTTPClient`` now follows 308 redirects. - ``CurlAsyncHTTPClient`` will no longer accept protocols other than ``http`` and ``https``. To override this, set ``pycurl.PROTOCOLS`` and ``pycurl.REDIR_PROTOCOLS`` in a ``prepare_curl_callback``. - ``CurlAsyncHTTPClient`` now supports digest authentication for proxies (in addition to basic auth) via the new ``proxy_auth_mode`` argument. - The minimum supported version of ``libcurl`` is now ``7.22.0``. `tornado.httpserver` ~~~~~~~~~~~~~~~~~~~~ - `.HTTPServer` now accepts the keyword argument ``trusted_downstream`` which controls the parsing of ``X-Forwarded-For`` headers. This header may be a list or set of IP addresses of trusted proxies which will be skipped in the ``X-Forwarded-For`` list. - The ``no_keep_alive`` argument works again. `tornado.httputil` ~~~~~~~~~~~~~~~~~~ - `.url_concat` correctly handles fragments and existing query arguments. `tornado.ioloop` ~~~~~~~~~~~~~~~~ - Fixed 100% CPU usage after a callback returns an empty list or dict. - `.IOLoop.add_callback` now uses a lockless implementation which makes it safe for use from ``__del__`` methods. This improves performance of calls to `~.IOLoop.add_callback` from the `.IOLoop` thread, and slightly decreases it for calls from other threads. `tornado.iostream` ~~~~~~~~~~~~~~~~~~ - `memoryview` objects are now permitted as arguments to `~.BaseIOStream.write`. - The internal memory buffers used by `.IOStream` now use `bytearray` instead of a list of `bytes`, improving performance. - Futures returned by `~.BaseIOStream.write` are no longer orphaned if a second call to ``write`` occurs before the previous one is finished. `tornado.log` ~~~~~~~~~~~~~ - Colored log output is now supported on Windows if the `colorama <https://pypi.python.org/pypi/colorama>`_ library is installed and the application calls ``colorama.init()`` at startup. - The signature of the `.LogFormatter` constructor has been changed to make it compatible with `logging.config.dictConfig`. `tornado.netutil` ~~~~~~~~~~~~~~~~~ - Worked around an issue that caused "LookupError: unknown encoding: latin1" errors on Solaris. `tornado.process` ~~~~~~~~~~~~~~~~~ - `.Subprocess` no longer causes "subprocess still running" warnings on Python 3.6. - Improved error handling in `.cpu_count`. `tornado.tcpclient` ~~~~~~~~~~~~~~~~~~~ - `.TCPClient` now supports a ``source_ip`` and ``source_port`` argument. - Improved error handling for environments where IPv6 support is incomplete. `tornado.tcpserver` ~~~~~~~~~~~~~~~~~~~ - `.TCPServer.handle_stream` implementations may now be native coroutines. - Stopping a `.TCPServer` twice no longer raises an exception. `tornado.web` ~~~~~~~~~~~~~ - `.RedirectHandler` now supports substituting parts of the matched URL into the redirect location using `str.format` syntax. - New methods `.RequestHandler.render_linked_js`, `.RequestHandler.render_embed_js`, `.RequestHandler.render_linked_css`, and `.RequestHandler.render_embed_css` can be overridden to customize the output of `.UIModule`. `tornado.websocket` ~~~~~~~~~~~~~~~~~~~ - `.WebSocketHandler.on_message` implementations may now be coroutines. New messages will not be processed until the previous ``on_message`` coroutine has finished. - The ``websocket_ping_interval`` and ``websocket_ping_timeout`` application settings can now be used to enable a periodic ping of the websocket connection, allowing dropped connections to be detected and closed. - The new ``websocket_max_message_size`` setting defaults to 10MiB. The connection will be closed if messages larger than this are received. - Headers set by `.RequestHandler.prepare` or `.RequestHandler.set_default_headers` are now sent as a part of the websocket handshake. - Return values from `.WebSocketHandler.get_compression_options` may now include the keys ``compression_level`` and ``mem_level`` to set gzip parameters. The default compression level is now 6 instead of 9. Demos ~~~~~ - A new file upload demo is available in the `file_upload <https://github.com/tornadoweb/tornado/tree/master/demos/file_upload>`_ directory. - A new `.TCPClient` and `.TCPServer` demo is available in the `tcpecho <https://github.com/tornadoweb/tornado/tree/master/demos/tcpecho>`_ directory. - Minor updates have been made to several existing demos, including updates to more recent versions of jquery. Credits ~~~~~~~ The following people contributed commits to this release: - A\. Jesse Jiryu Davis - Aaron Opfer - Akihiro Yamazaki - Alexander - Andreas Røsdal - Andrew Rabert - Andrew Sumin - Antoine Pietri - Antoine Pitrou - Artur Stawiarski - Ben Darnell - Brian Mego - Dario - Doug Vargas - Eugene Dubovoy - Iver Jordal - JZQT - James Maier - Jeff Hunter - Leynos - Mark Henderson - Michael V. DePalatis - Min RK - Mircea Ulinic - Ping - Ping Yang - Riccardo Magliocchetti - Samuel Chen - Samuel Dion-Girardeau - Scott Meisburger - Shawn Ding - TaoBeier - Thomas Kluyver - Vadim Semenov - matee - mike820324 - stiletto - zhimin - 依云
c9d2a3f
2017-04-17 07:46
下载
v4.4.3
What's new in Tornado 4.4.3 Mar 30, 2017 ------------ Bug fixes ~~~~~~~~~ * The `tornado.auth` module has been updated for compatibility with `a change to Facebook's access_token endpoint. <https://github.com/tornadoweb/tornado/pull/1977>`_
50f1890
2017-03-30 21:17
下载
下载
请输入验证码,防止盗链导致资源被占用
取消
下载