mirror of
https://github.com/django/daphne.git
synced 2024-11-23 08:23:43 +03:00
536 lines
14 KiB
Plaintext
536 lines
14 KiB
Plaintext
4.0.0 (2022-10-07)
|
|
------------------
|
|
|
|
Major versioning targeting use with Channels 4.0 and beyond. Except where
|
|
noted should remain usable with Channels v3 projects, but updating Channels to the latest version is recommended.
|
|
|
|
* Added a ``runserver`` command to run an ASGI Django development server.
|
|
|
|
Added ``"daphne"`` to the ``INSTALLED_APPS`` setting, before
|
|
``"django.contrib.staticfiles"`` to enable:
|
|
|
|
INSTALLED_APPS = [
|
|
"daphne",
|
|
...
|
|
]
|
|
|
|
This replaces the Channels implementation of ``runserver``, which is removed
|
|
in Channels 4.0.
|
|
|
|
* Made the ``DaphneProcess`` tests helper class compatible with the ``spawn``
|
|
process start method, which is used on macOS and Windows.
|
|
|
|
Note that requires Channels v4 if using with ``ChannelsLiveServerTestCase``.
|
|
|
|
* Dropped support for Python 3.6.
|
|
|
|
* Updated dependencies to the latest versions.
|
|
|
|
Previously a range of Twisted versions have been supported. Recent Twisted
|
|
releases (22.2, 22.4) have issued security fixes, so those are now the
|
|
minimum supported version. Given the stability of Twisted, supporting a
|
|
range of versions does not represent a good use of maintainer time. Going
|
|
forward the latest Twisted version will be required.
|
|
|
|
* Set ``daphne`` as default ``Server`` header.
|
|
|
|
This can be configured with the ``--server-name`` CLI argument.
|
|
|
|
Added the new ``--no-server-name`` CLI argument to disable the ``Server``
|
|
header, which is equivalent to ``--server-name=` (an empty name).
|
|
|
|
* Added ``--log-fmt`` CLI argument.
|
|
|
|
* Added support for ``ASGI_THREADS`` environment variable, setting the maximum
|
|
number of workers used by a ``SyncToAsync`` thread-pool executor.
|
|
|
|
Set e.g. ``ASGI_THREADS=4 daphne ...`` when running to limit the number of
|
|
workers.
|
|
|
|
* Removed deprecated ``--ws_protocols`` CLI option.
|
|
|
|
3.0.2 (2021-04-07)
|
|
------------------
|
|
|
|
* Fixed a bug where ``send`` passed to applications wasn't a true async
|
|
function but a lambda wrapper, preventing it from being used with
|
|
``asgiref.sync.async_to_sync()``.
|
|
|
|
|
|
3.0.1 (2020-11-12)
|
|
------------------
|
|
|
|
* Fixed a bug where ``asyncio.CancelledError`` was not correctly handled on
|
|
Python 3.8+, resulting in incorrect protocol application cleanup.
|
|
|
|
|
|
3.0.0 (2020-10-28)
|
|
------------------
|
|
|
|
* Updates internals to use ASGI v3 throughout. ``asgiref.compatibility`` is
|
|
used for older applications.
|
|
|
|
* Consequently, the `--asgi-protocol` command-line option is removed.
|
|
|
|
* HTTP request bodies are now read, and passed to the application, in chunks.
|
|
|
|
* Added support for Python 3.9.
|
|
|
|
* Dropped support for Python 3.5.
|
|
|
|
|
|
2.5.0 (2020-04-15)
|
|
------------------
|
|
|
|
* Fixes compatability for twisted when running Python 3.8+ on Windows, by
|
|
setting ``asyncio.WindowsSelectorEventLoopPolicy`` as the event loop policy
|
|
in this case.
|
|
|
|
* The internal ``daphne.testing.TestApplication`` now requires an addition
|
|
``lock`` argument to ``__init__()``. This is expected to be an instance of
|
|
``multiprocessing.Lock``.
|
|
|
|
|
|
2.4.1 (2019-12-18)
|
|
------------------
|
|
|
|
* Avoids Twisted using the default event loop, for compatibility with Django
|
|
3.0's ``async_unsafe()`` decorator in threaded contexts, such as using the
|
|
auto-reloader.
|
|
|
|
|
|
2.4.0 (2019-11-20)
|
|
------------------
|
|
|
|
* Adds CI testing against and support for Python 3.8.
|
|
|
|
* Adds support for ``raw_path`` in ASGI scope.
|
|
|
|
* Ensures an error response is sent to the client if the application sends
|
|
malformed headers.
|
|
|
|
* Resolves an asyncio + multiprocessing problem when testing that would cause
|
|
the test suite to fail/hang on macOS.
|
|
|
|
* Requires installing Twisted's TLS extras, via ``install_requires``.
|
|
|
|
* Adds missing LICENSE to distribution.
|
|
|
|
|
|
2.3.0 (2019-04-09)
|
|
------------------
|
|
|
|
* Added support for ASGI v3.
|
|
|
|
|
|
2.2.5 (2019-01-31)
|
|
------------------
|
|
|
|
* WebSocket handshakes are now affected by the websocket connect timeout, so
|
|
you can limit them from the command line.
|
|
|
|
* Server name can now be set using --server-name
|
|
|
|
|
|
2.2.4 (2018-12-15)
|
|
------------------
|
|
|
|
* No longer listens on port 8000 when a file descriptor is provided with --fd
|
|
|
|
* Fixed a memory leak with WebSockets
|
|
|
|
|
|
2.2.3 (2018-11-06)
|
|
------------------
|
|
|
|
* Enforce that response headers are only bytestrings, rather than allowing
|
|
unicode strings and coercing them into bytes.
|
|
|
|
* New command-line options to set proxy header names: --proxy-headers-host and
|
|
--proxy-headers-port.
|
|
|
|
|
|
2.2.2 (2018-08-16)
|
|
------------------
|
|
|
|
* X-Forwarded-Proto support is now present and enabled if you turn on the
|
|
--proxy-headers flag
|
|
|
|
* ASGI applications are no longer instantiated in a thread (the ASGI spec
|
|
was finalised to say all constructors must be non-blocking on the main thread)
|
|
|
|
|
|
2.2.1 (2018-07-22)
|
|
------------------
|
|
|
|
* Python 3.7 compatability is flagged and ensured by using Twisted 18.7 and
|
|
above as a dependency.
|
|
|
|
* The send() awaitable in applications no longer blocks if the connection is
|
|
closed.
|
|
|
|
* Fixed a race condition where applications would be cleaned up before they
|
|
had even started.
|
|
|
|
|
|
2.2.0 (2018-06-13)
|
|
------------------
|
|
|
|
* HTTP timeouts have been removed by default, as they were only needed
|
|
with ASGI/Channels 1. You can re-enable them with the --http-timeout
|
|
argument to Daphne.
|
|
|
|
* Occasional errors on application timeout for non-fully-opened sockets
|
|
and for trying to read closed requests under high load are fixed.
|
|
|
|
* X-Forwarded-For headers are now correctly decoded in all environments
|
|
and no longer have unicode matching issues.
|
|
|
|
|
|
2.1.2 (2018-05-24)
|
|
------------------
|
|
|
|
* Fixed spurious errors caused by websockets disconnecting before their
|
|
application was instantiated.
|
|
|
|
* Stronger checking for type-safety of headers as bytestrings
|
|
|
|
|
|
2.1.1 (2018-04-18)
|
|
------------------
|
|
|
|
* ASGI application constructors are now run in a threadpool as they might
|
|
contain blocking synchronous code.
|
|
|
|
|
|
2.1.0 (2018-03-05)
|
|
------------------
|
|
|
|
* Removed subprotocol support from server, as it never really worked. Subprotocols
|
|
can instead be negotiated by ASGI applications now.
|
|
|
|
* Non-ASCII query strings now raise a 400 Bad Request error rather than silently
|
|
breaking the logger
|
|
|
|
|
|
2.0.4 (2018-02-21)
|
|
------------------
|
|
|
|
* Ping timeouts no longer reset on outgoing data, only incoming data
|
|
|
|
* No more errors when connections close prematurely
|
|
|
|
|
|
2.0.3 (2018-02-07)
|
|
------------------
|
|
|
|
* Unix socket listening no longer errors during startup (introduced in 2.0.2)
|
|
|
|
* ASGI Applications are now not immediately killed on disconnection but instead
|
|
given --application-close-timeout seconds to exit (defaults to 10)
|
|
|
|
|
|
2.0.2 (2018-02-04)
|
|
------------------
|
|
|
|
* WebSockets are no longer closed after the duration of http_timeout
|
|
|
|
|
|
2.0.1 (2018-02-03)
|
|
------------------
|
|
|
|
* Updated logging to correctly route exceptions through the main Daphne logger
|
|
|
|
|
|
2.0.0 (2018-02-01)
|
|
------------------
|
|
|
|
* Major rewrite to the new async-based ASGI specification and to support
|
|
Channels 2. Not backwards compatible.
|
|
|
|
|
|
1.3.0 (2017-06-16)
|
|
------------------
|
|
|
|
* Ability to set the websocket connection timeout
|
|
|
|
* Server no longer reveals the exact Autobahn version number for security
|
|
|
|
* A few unicode fixes for Python 2/3 compatability
|
|
|
|
* Stopped logging messages to already-closed connections as ERROR
|
|
|
|
|
|
1.2.0 (2017-04-01)
|
|
------------------
|
|
|
|
* The new process-specific channel support is now implemented, resulting in
|
|
significantly less traffic to your channel backend.
|
|
|
|
* Native twisted blocking support for channel layers that support it is now
|
|
used. While it is a lot more efficient, it is also sometimes slightly more
|
|
latent; you can disable it using --force-sync.
|
|
|
|
* Native SSL termination is now correctly reflected in the ASGI-HTTP `scheme`
|
|
key.
|
|
|
|
* accept: False is now a valid way to deny a connection, as well as close: True.
|
|
|
|
* HTTP version is now correctly sent as one of "1.0", "1.1" or "2".
|
|
|
|
* More command line options for websocket timeouts
|
|
|
|
|
|
1.1.0 (2017-03-18)
|
|
------------------
|
|
|
|
* HTTP/2 termination is now supported natively. The Twisted dependency has been
|
|
increased to at least 17.1 as a result; for more information about setting up
|
|
HTTP/2, see the README.
|
|
|
|
* X-Forwarded-For decoding support understands IPv6 addresses, and picks the
|
|
most remote (leftmost) entry if there are multiple relay hosts.
|
|
|
|
* Fixed an error where `disconnect` messages would still try and get sent even
|
|
if the client never finished a request.
|
|
|
|
|
|
1.0.3 (2017-02-12)
|
|
------------------
|
|
|
|
* IPv6 addresses are correctly accepted as bind targets on the command line
|
|
|
|
* Twisted 17.1 compatability fixes for WebSocket receiving/keepalive and
|
|
proxy header detection.
|
|
|
|
|
|
1.0.2 (2017-02-01)
|
|
------------------
|
|
|
|
* The "null" WebSocket origin (including file:// and no value) is now accepted
|
|
by Daphne and passed onto the application to accept/deny.
|
|
|
|
* Listening on file descriptors works properly again.
|
|
|
|
* The DeprecationError caused by not passing endpoints into a Server class
|
|
directly is now a warning instead.
|
|
|
|
|
|
1.0.1 (2017-01-09)
|
|
------------------
|
|
|
|
* Endpoint unicode strings now work correctly on Python 2 and Python 3
|
|
|
|
|
|
1.0.0 (2017-01-08)
|
|
------------------
|
|
|
|
* BREAKING CHANGE: Daphne now requires acceptance of WebSocket connections
|
|
before it finishes the socket handshake and relays incoming packets.
|
|
You must upgrade to at least Channels 1.0.0 as well; see
|
|
http://channels.readthedocs.io/en/latest/releases/1.0.0.html for more.
|
|
|
|
* http.disconnect now has a `path` key
|
|
|
|
* WebSockets can now be closed with a specific code
|
|
|
|
* X-Forwarded-For header support; defaults to X-Forwarded-For, override with
|
|
--proxy-headers on the commandline.
|
|
|
|
* Twisted endpoint description string support with `-e` on the command line
|
|
(allowing for SNI/ACME support, among other things)
|
|
|
|
* Logging/error verbosity fixes and access log flushes properly
|
|
|
|
|
|
0.15.0 (2016-08-28)
|
|
-------------------
|
|
|
|
* Connections now force-close themselves after pings fail for a certain
|
|
timeframe, controllable via the new --ping-timeout option.
|
|
|
|
* Badly-formatted websocket response messages now log to console in
|
|
all situations
|
|
|
|
* Compatability with Twisted 16.3 and up
|
|
|
|
|
|
0.14.3 (2016-07-21)
|
|
-------------------
|
|
|
|
* File descriptors can now be passed on the commandline for process managers
|
|
that pass sockets along like this.
|
|
|
|
* websocket.disconnect messages now come with a "code" attribute matching the
|
|
WebSocket spec.
|
|
|
|
* A memory leak in request logging has been fixed.
|
|
|
|
|
|
0.14.2 (2016-07-07)
|
|
-------------------
|
|
|
|
* Marked as incompatible with twisted 16.3 and above until we work out why
|
|
it stops incoming websocket messages working
|
|
|
|
|
|
0.14.1 (2016-07-06)
|
|
-------------------
|
|
|
|
* Consumption of websocket.receive is also now required.
|
|
|
|
|
|
0.14.0 (2016-07-06)
|
|
-------------------
|
|
|
|
* Consumption of websocket.connect is now required (channels 0.16 enforces
|
|
this); getting backpressure on it now results in the socket being
|
|
force closed.
|
|
|
|
|
|
0.13.1 (2016-06-28)
|
|
-------------------
|
|
|
|
* Bad WebSocket handshakes now return 400 and an error messages
|
|
rather than 500 with no content.
|
|
|
|
|
|
0.13.0 (2016-06-22)
|
|
-------------------
|
|
|
|
* Query strings are now sent as bytestrings and the application is responsible
|
|
for decoding. Ensure you're running Channels 0.15 or higher.
|
|
|
|
|
|
0.12.2 (2016-06-21)
|
|
-------------------
|
|
|
|
* Plus signs in query string are now handled by Daphne, not Django-by-mistake.
|
|
Ensure you're running Channels 0.14.3 or higher.
|
|
|
|
* New --root-path and DAPHNE_ROOT_PATH options for setting root path.
|
|
|
|
|
|
0.12.1 (2016-05-18)
|
|
-------------------
|
|
|
|
* Fixed bug where a non-ASCII byte in URL paths would crash the HTTP parser
|
|
without a response; now returns 400, and hardening in place to catch most
|
|
other errors and return a 500.
|
|
|
|
* WebSocket header format now matches HTTP header format and the ASGI spec.
|
|
No update needed to channels library, but user code may need updating.
|
|
|
|
|
|
0.12.0 (2016-05-07)
|
|
-------------------
|
|
|
|
* Backpressure on http.request now causes incoming requests to drop with 503.
|
|
Websockets will drop connection/disconnection messages/received frames if
|
|
backpressure is encountered; options are coming soon to instead drop the
|
|
connection if this happens.
|
|
|
|
|
|
0.11.4 (2016-05-04)
|
|
-------------------
|
|
|
|
* Don't try to send TCP host info in message for unix sockets
|
|
|
|
|
|
0.11.3 (2016-04-27)
|
|
-------------------
|
|
|
|
* Don't decode + as a space in URLs
|
|
|
|
|
|
0.11.2 (2016-04-27)
|
|
-------------------
|
|
|
|
* Correctly encode all path params for WebSockets
|
|
|
|
|
|
0.11.1 (2016-04-26)
|
|
-------------------
|
|
|
|
* Fix bugs with WebSocket path parsing under Python 2
|
|
|
|
|
|
0.11.0 (2016-04-26)
|
|
-------------------
|
|
|
|
* HTTP paths and query strings are now pre-decoded before going to ASGI
|
|
|
|
|
|
0.10.3 (2016-04-05)
|
|
-------------------
|
|
|
|
* Error on badly formatted websocket reply messages
|
|
|
|
|
|
0.10.2 (2016-04-03)
|
|
-------------------
|
|
|
|
* Access logging in NCSAish format now printed to stdout, configurable to
|
|
another file using --access-log=filename
|
|
|
|
|
|
0.10.1 (2016-03-29)
|
|
-------------------
|
|
|
|
* WebSockets now close after they've been open for longer than the channel
|
|
layer group expiry (86400 seconds by default for most layers).
|
|
|
|
* Binding to UNIX sockets is now possible (use the -u argument)
|
|
|
|
* WebSockets now send keepalive pings if they've had no data for a certain
|
|
amount of time (20 seconds by default, set with --ping-interval)
|
|
|
|
|
|
0.10.0 (2016-03-21)
|
|
-------------------
|
|
|
|
* Multiple cookies are now set correctly
|
|
|
|
* Follows new ASGI single-response-channel spec for !
|
|
|
|
* Follows new ASGI header encoding spec for HTTP
|
|
|
|
|
|
0.9.3 (2016-03-08)
|
|
------------------
|
|
|
|
* WebSocket query strings are correctly encoded
|
|
|
|
|
|
0.9.2 (2016-03-02)
|
|
------------------
|
|
|
|
* HTTP requests now time out after a configurable amount of time and return 503
|
|
(default is 2 minutes)
|
|
|
|
|
|
0.9.1 (2016-03-01)
|
|
------------------
|
|
|
|
* Main thread actually idles rather than sitting at 100%
|
|
|
|
* WebSocket packets have an "order" attribute attached
|
|
|
|
* WebSocket upgrade header detection is now case insensitive
|
|
|
|
|
|
0.9 (2016-02-21)
|
|
----------------
|
|
|
|
* Signal handlers can now be disabled if you want to run inside a thread
|
|
(e.g. inside Django autoreloader)
|
|
|
|
* Logging hooks that can be used to allow calling code to show requests
|
|
and other events.
|
|
|
|
* Headers are now transmitted for websocket.connect
|
|
|
|
* http.disconnect messages are now sent
|
|
|
|
* Request handling speed significantly improved
|