Google Cloud 运行 是否支持流式响应数据?
Does Google Cloud Run support streaming response data?
我刚刚将我的应用程序部署到 Google 云 运行。它有一个 HTTP end-point returns 流式响应,因此客户端可以在数据传入时开始呈现数据,而不是等待响应完成(大约需要 10 秒)。
响应有一个 content-type header application/stream+json
,数据作为单独的行写入响应。我已经通过 HTTPS 在其他地方部署了这个应用程序,并且流式传输在那里工作得很好。
但是,当部署在 Google 云 运行 上时,客户端在响应完成之前不会收到任何数据。
这是 Google Cloud 运行 的限制,还是我可以解决这个问题?
对于 "managed" 云 运行,没有。来自 https://cloud.google.com/run/docs/issues:
Cloud Run (fully managed) currently does not support HTTP streaming.
但是 GKE 上的 Cloud 运行 确实支持流式响应数据。
从 2020 年 10 月开始
云 运行 现在支持 server-side 流式传输:
https://cloud.google.com/blog/products/serverless/cloud-run-now-supports-http-grpc-server-streaming
通过此添加,Cloud 运行 现在可以:
发送大于之前 32 MB 限制的响应。
运行 gRPC 服务与 server-streaming RPC 并在单个请求中发送部分响应——除了对一元 (non-streaming) RPC 的现有支持。
响应 server-sent 事件 (SSE),您可以使用 HTML5 EventSource API.
从前端使用这些事件
我刚刚将我的应用程序部署到 Google 云 运行。它有一个 HTTP end-point returns 流式响应,因此客户端可以在数据传入时开始呈现数据,而不是等待响应完成(大约需要 10 秒)。
响应有一个 content-type header application/stream+json
,数据作为单独的行写入响应。我已经通过 HTTPS 在其他地方部署了这个应用程序,并且流式传输在那里工作得很好。
但是,当部署在 Google 云 运行 上时,客户端在响应完成之前不会收到任何数据。
这是 Google Cloud 运行 的限制,还是我可以解决这个问题?
对于 "managed" 云 运行,没有。来自 https://cloud.google.com/run/docs/issues:
Cloud Run (fully managed) currently does not support HTTP streaming.
但是 GKE 上的 Cloud 运行 确实支持流式响应数据。
从 2020 年 10 月开始
云 运行 现在支持 server-side 流式传输:
https://cloud.google.com/blog/products/serverless/cloud-run-now-supports-http-grpc-server-streaming
通过此添加,Cloud 运行 现在可以:
发送大于之前 32 MB 限制的响应。
运行 gRPC 服务与 server-streaming RPC 并在单个请求中发送部分响应——除了对一元 (non-streaming) RPC 的现有支持。
响应 server-sent 事件 (SSE),您可以使用 HTML5 EventSource API.
从前端使用这些事件