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

Use a producer to stream back responses#3693

Closed
richvdh wants to merge 1 commit into
developfrom
rav/use_producer_for_responses
Closed

Use a producer to stream back responses#3693
richvdh wants to merge 1 commit into
developfrom
rav/use_producer_for_responses

Conversation

@richvdh
Copy link
Copy Markdown
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
Comment thread synapse/http/server.py Outdated
Copy link
Copy Markdown
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
Copy Markdown
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.
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