#33738: ASGI http.disconnect not handled on requests with body.
--------------------------------+------------------------------------
Reporter: Carlton Gibson | Owner: nobody
Type: Bug | Status: new
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 rahul negi):
Replying to [ticket:33738 Carlton Gibson]:
> {{{
> async def read_body(self, receive):
> """Reads an HTTP body from an ASGI connection."""
> # Use the tempfile that auto rolls-over to a disk file as it
fills up.
> body_file = tempfile.SpooledTemporaryFile(
> max_size=settings.FILE_UPLOAD_MAX_MEMORY_SIZE, mode="w+b"
> )
> while True:
> message = await receive()
> if message["type"] == "http.disconnect": # This is the
only place `http.disconnect` is handled.
> body_file.close()
> # Early client disconnect.
> raise RequestAborted()
> # Add a body chunk from the message, if provided.
> if "body" in message:
> body_file.write(message["body"])
> # Quit out if that's the end.
> if not message.get("more_body", False):
> break
> body_file.seek(0)
> return body_file
> }}}
>
I'm following this ticket for some days and trying to understand the code
base learned more about the asynchronous processes and long-polling,
IDK this is a solution or not,
if we perform a loop only while receiving the message and break it after X
interval of time like
{{{
while True:
message = await receive()
message_queue.append(message)
if time_waited == X :
break
}}}
and do store it in a queue and then perform a loop on the queue data to
read the message?
Please correct me if I'm wrong or if this sounds immature,
thanks
--
Ticket URL: <https://code.djangoproject.com/ticket/33738#comment:4>
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/01070181a0e58162-24d074c5-8ff6-4373-9782-43a0f0453b4b-000000%40eu-central-1.amazonses.com.