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.

    从前端使用这些事件