【问题标题】:Does Cloud Run support server sent events (SSE)?Cloud Run 是否支持服务器发送事件 (SSE)?
【发布时间】:2020-07-21 07:45:03
【问题描述】:

我们无法让 SSE 从 Google Cloud Run 上的容器发送。我尝试用一​​个简单的 SSE 示例 (https://github.com/kljensen/node-sse-example) 托管一个容器,看看它是否在我们的库中——不。

我从服务器看到客户端连接(就像最初的 GET 工作一样),但没有从服务器发送任何事件。客户端上的EventSource 永远不会从CONNECTING 更改为CONNECTED

从 Cloud Run 文档来看,是否支持这有点模棱两可(强调我的):

Cloud Run(全托管)目前不支持 HTTP 流式传输。因此,不支持使用 WebSockets 和 gRPC(流式 RPC)等协议的入站请求。

作为一个例外,Cloud Run(全托管)服务支持一元 gRPC 来处理入站请求。

对于出站请求,Cloud Run(全托管)同时支持 WebSocket 和 gRPC。

SSE 不会算作出站请求,还是我误解了?

【问题讨论】:

  • 查看我的更新回复并考虑将其标记为已接受。

标签: google-cloud-run


【解决方案1】:

更新(2020 年 10 月 8 日):现在支持服务器流式传输 https://cloud.google.com/blog/products/serverless/cloud-run-now-supports-http-grpc-server-streaming

目前没有。但是,此功能(gRPC 服务器端流和 SSE)将很快推出。我们正在积极努力,敬请期待。

【讨论】:

  • 所以你的意思是一旦功能交付,我们将能够免费保持连接,并且只有在数据从服务器发送到客户端时才付费?
  • 不太可能。只要 HTTP 请求打开,就会收费。
  • @AhmetB-Google 这真是太棒了!我们很高兴拥有这个功能。只是好奇 - 这是否也意味着最大请求超时将从 900 秒增加?
  • @AhmetB-Google 是否有任何关于 SSE 支持的更新,或者我们是否可以在某个地方跟上这方面的步伐?
  • SSE 即将推出。请务必关注 GCP 博客无服务器部分。
【解决方案2】:

嗯,目前的临时解决方法是切换到 Google App Engine Flexible 并使用 X-Accel-Buffering: no 响应标头禁用响应缓冲。

【讨论】:

    【解决方案3】:

    实际上,出站请求是指您在 Cloud Run 上的容器向其他服务发出的请求。 正如 Guillaume 所提到的,目前无法流式传输响应,我想这也与 Cloud Run 将缓冲每个响应这一事实有关。

    我自己正在寻找解决方法,如果我找到任何合适的解决方案,我会及时通知您?

    【讨论】:

      【解决方案4】:

      如果我参考 Cloud Run 设计,容器处理仅在处理请求时进行,其余时间 CPU 接近空闲。这就是为什么仅在处理请求时才向您收费的原因。

      如果我采用 SSE 流程,服务器会启动与客户端的连接。您需要处理时间(和资源)来建立和维护此连接。而且因为它没有任何请求,所以您的 CPU 处于空闲状态,无法执行此操作。

      因此,对于您的实施问题,我没有明确的答案,但根据设计,我很确定 Cloud Run 不能与 SSE 一起使用。至少目前是这样。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-02-25
        • 1970-01-01
        • 2021-09-01
        • 2014-12-31
        • 1970-01-01
        • 2019-09-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多