mirror of
https://github.com/gradio-app/gradio.git
synced 2025-04-06 12:30:29 +08:00
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:
parent
c38cf64df6
commit
cbd703270a
5
.changeset/cold-parents-crash.md
Normal file
5
.changeset/cold-parents-crash.md
Normal file
@ -0,0 +1,5 @@
|
||||
---
|
||||
"gradio": patch
|
||||
---
|
||||
|
||||
feat:fix: stream node response to user
|
@ -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:
|
||||
|
Loading…
x
Reference in New Issue
Block a user