#33699: Read ASGI request body from asyncio queue on-demand
-------------------------------+------------------------------------
Reporter: Noxx | Owner: noneNote
Type: New feature | Status: closed
Component: HTTP handling | Version: dev
Severity: Normal | Resolution: wontfix
Keywords: ASGI, async | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 1
Easy pickings: 0 | UI/UX: 0
-------------------------------+------------------------------------
Comment (by Klaas van Schelven):
TBH I'm not wholly convinced on your reading of the ASGI standard.
1. The ellipsis in the quote from the first bullet read "the body message
serves as a way to stream large incoming HTTP bodies in chunks", and it is
not clear to me why there would be a "way to stream large incoming HTTP
bodies" on the ASGI http protocol level if ASGI applications are forbidden
to make use of this in a meaningful way.
2. Regarding the second quote, first part "should wait" could be read as
"should wait if the application needs the whole request body to make its
response"
3. Regarding the second quote, second part there is no need to read
"should be processed" as "should be processed no earlier than"
4. Your reading (correct or not) is in direct contradiction with the
second paragraph of the ASGI spec which reads in full "ASGI attempts to
preserve a simple application interface, **while providing an abstraction
that allows for data to be sent and received at any time**, and from
different application threads or processes." (emphasis mine)
You say the ASGI spec cannot be changed, but AFAIU the links between the
ASGI Team and the Django team are quite close, so this is not entirely
impossible.
As a final note: the 2 "other" big ASGI servers (not built by Andrew)
actually have a "Hello World" example in their right on the homepage / in
the quickstart that does in fact do no attempt to read the request (and
are thus in violation of the spec as understood by Carlton):
*
[uvicorn](https://github.com/encode/uvicorn/blob/c23cd24e6676ee0638d014d7000af1e6e0996bd6/README.md#L58)
*
[hypercorn](https://github.com/pgjones/hypercorn/blob/84d06b8cf47798d2df7722273341e720ec0ea102/docs/tutorials/quickstart.rst#L14)
--
Ticket URL: <https://code.djangoproject.com/ticket/33699#comment:8>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/01070190a3609a89-63ac875d-c8e9-4a57-88cf-52ca35dd5f06-000000%40eu-central-1.amazonses.com.