fix: stream node response to user (#10068)

* fix

Signed-off-by: Adrien <adrien@huggingface.co>

* add changeset

* add changeset

* format

* add changeset

* fix read content

Signed-off-by: Adrien <adrien@huggingface.co>

---------

Signed-off-by: Adrien <adrien@huggingface.co>
Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>
This commit is contained in:
Adrien 2024-11-28 18:33:12 +01:00 committed by GitHub
parent c38cf64df6
commit cbd703270a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 10 additions and 24 deletions

View File

@ -0,0 +1,5 @@
---
"gradio": patch
---
feat:fix: stream node response to user

View File

@ -273,32 +273,13 @@ class App(FastAPI):
new_request = App.client.build_request(
request.method, httpx.URL(url), headers=headers
)
node_response = await App.client.send(new_request)
content = node_response.content
user_agent = request.headers.get("user-agent", "").lower()
is_safari = (
"safari" in user_agent
and "chrome" not in user_agent
and "chromium" not in user_agent
)
response_headers = {}
if is_safari:
response_headers = {
"Access-Control-Allow-Origin": "*",
"Cross-Origin-Opener-Policy": "same-origin",
"Cross-Origin-Embedder-Policy": "require-corp",
}
if request.url.path.endswith(".js"):
response_headers["Content-Type"] = (
"application/javascript; charset=utf-8"
)
elif request.url.path.endswith(".css"):
response_headers["Content-Type"] = "text/css; charset=utf-8"
node_response = await App.client.send(new_request, stream=True)
return Response(
content=content,
return StreamingResponse(
node_response.aiter_raw(),
status_code=node_response.status_code,
headers=response_headers if is_safari else node_response.headers,
headers=node_response.headers,
background=BackgroundTask(node_response.aclose),
)
def configure_app(self, blocks: gradio.Blocks) -> None: