#33738: ASGI http.disconnect not handled on requests with body.
-------------------------------------+-------------------------------------
Reporter: Carlton Gibson | Owner: Dennis
| Chukwunta
Type: Bug | Status: assigned
Component: HTTP handling | Version: 4.0
Severity: Normal | Resolution:
Keywords: ASGI | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by Carlton Gibson):
With regard to detecting `http.disconnect`, it looks like there are two
options.
First, if we gave `ASGIRequest` a reference to the application `receive`
queue (via `__init__`) then we could add something like an
`is_disconnected` method that could see if there was an event message
pending, and if it were, whether it was a `http.disconnect` method. (I
don't think the spec allows anything else, since the body messages have
been consumed prior to instantiating the request.) Views could then call
this method periodically, or before beginning an expensive process, to
know to finish up early.
Second, inside handle we could launch a separate task to `get` on the
receive queue after creating the `body_file` and listen for the disconnect
events which we'd then use as notice to cancel the view dispatch. That
would need some restructuring, since the view dispatch would need wrapping
in a task (in order to have something to cancel), but I guess would be
feasible. Proof-of-concept here desirable. 🤔
I think option 1 if probably simpler.
--
Ticket URL: <https://code.djangoproject.com/ticket/33738#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/010701865a9f9d6a-969d1085-5e4f-456b-b2cd-d5f9edbbdd17-000000%40eu-central-1.amazonses.com.