【问题标题】:Does Google Cloud Run support streaming response data?Google Cloud Run 是否支持流式响应数据?
【发布时间】:2020-03-17 16:29:36
【问题描述】:

我刚刚将我的应用程序部署到 Google Cloud Run。它有一个返回流式响应的 HTTP 端点,因此客户端可以在数据进入时开始呈现数据,而不是等待响应完成(大约需要 10 秒)。

响应具有内容类型标头application/stream+json,并且数据作为单独的行写入响应。我已经通过 HTTPS 将这个应用程序部署在其他地方,并且流式传输在那里工作得很好。

但是,当部署在 Google Cloud Run 上时,客户端在响应完成之前不会收到任何数据。

这是 Google Cloud Run 的限制,还是有办法解决这个问题?

【问题讨论】:

  • Cloud Run前面有一个代理(GFE)。您的客户端连接到代理而不是直接连接到您的应用程序。一旦您的服务向代理返回请求,代理就会向客户端返回请求。目前不支持(可能会改变)流式传输。

标签: google-cloud-platform google-cloud-run


【解决方案1】:

将从 2020 年 10 月开始

Cloud Run 现在支持服务器端流式传输:

https://cloud.google.com/blog/products/serverless/cloud-run-now-supports-http-grpc-server-streaming

添加此功能后,Cloud Run 现在可以:

  • 发送大于之前 32 MB 限制的响应。

  • 使用服务器流式 RPC 运行 gRPC 服务并在单个请求中发送部分响应 - 除了现有的对一元(非流式)RPC 的支持。

  • 使用服务器发送的事件 (SSE) 进行响应,您可以使用 HTML5 EventSource API 从前端使用这些事件。

【讨论】:

    【解决方案2】:

    对于“托管”Cloud Run,没有。来自https://cloud.google.com/run/docs/issues:

    Cloud Run(全托管)目前不支持 HTTP 流。

    但 GKE 上的 Cloud Run 确实支持流式响应数据。

    【讨论】:

    • Cloud Run on GKE 不支持 gRPC 流。
    • @guillaume-blaquiere 尝试过,并确认:在 GKE(而不是完全托管的版本)上运行时,Cloud Run 确实支持流式响应数据。
    • @RobvanMaris 谢谢!我已经相应地更新了答案,如果它回答了您的问题,请接受。
    • 这个答案应该更新了,截至6天前,cloud run支持各种流式响应,包括gRPC
    猜你喜欢
    • 1970-01-01
    • 2022-01-02
    • 2016-09-15
    • 2021-04-12
    • 2016-06-09
    • 1970-01-01
    • 2020-05-08
    • 2017-10-24
    • 2023-03-09
    相关资源
    最近更新 更多