Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Use a producer to stream back responses #3693

Closed
wants to merge 1 commit into from

Conversation

richvdh
Copy link
Member

@richvdh richvdh commented Aug 14, 2018

The problem with dumping all of the json response into the Request object
at once is that doing so starts the timeout for the next request to be
received: so if it takes longer than 60s to stream back the response to the
client, the client never gets it.

The correct solution is to use Producer; then the timeout is only started
once all of the content is sent over the TCP connection.

However, we then need to hook the completion logging in via notifyFinish
(which is a much better way of doing things anyway), in order to correctly
read the response length.

@richvdh richvdh requested a review from a team August 14, 2018 15:58

producer = NoRangeStaticProducer(request, bytes_io)
producer.start()
return NOT_DONE_YET
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reason we don't replace respond_with_json_bytes with this?

@richvdh
Copy link
Member Author

richvdh commented Aug 15, 2018

This is going to get replaced by #3700 and another PR.

The problem with dumping all of the json response into the Request object at
once is that doing so starts the timeout for the next request to be received:
so if it takes longer than 60s to stream back the response to the client, the
client never gets it.

The correct solution is to use Producer; then the timeout is only started once
all of the content is sent over the TCP connection.

However, we then need to hook the completion logging in via notifyFinish (which
is a much better way of doing things anyway), in order to correctly read the
response length.
@richvdh richvdh force-pushed the rav/use_producer_for_responses branch from 9d95e43 to 6f3bf1b Compare August 15, 2018 13:15
@richvdh richvdh closed this Aug 15, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants