2.3.0 Release Notes =================== Channels 2.3.0 updates the ``AsgiHandler`` HTTP request body handling to use a spooled temporary file, rather than reading the whole request body into memory. This significantly reduces the maximum memory requirements when serving Django views, and protects from DoS attacks, whilst still allowing large file uploads — a combination that had previously been *difficult*. Many thanks to Ivan Ergunov for his work on the improvements! 🎩 Backwards Incompatible Changes ------------------------------ As a result of the reworked body handling, ``AsgiRequest.__init__()`` is adjusted to expecte a file-like ``stream``, rather than the whole ``body`` as bytes. Test cases instantiating requests directly will likely need to be updated to wrap the provided ``body`` in, e.g., ``io.BytesIO``. Next Up... ---------- We're looking to address a few issues around ``AsyncHttpConsumer``. Any human-power available to help on that, truly appreciated. 🙂