请求取消不会传播到云运行容器

2023-12-20

当发送到云运行服务的 HTTP 请求被发起服务取消时,取消/关闭的连接不会传播到云运行容器内正在服务的请求。

示例代码:

package main

import (
    "log"
    "net/http"
    "os"
    "time"
)

func main() {
    port := os.Getenv("PORT")
    if port == "" {
        port = "8080"
    }
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        ctx := r.Context()
        select {
        case <-ctx.Done():
            log.Printf("context cancelled")
        case <-time.After(time.Minute):
            w.Write([]byte("OK"))
            log.Printf("request completed. path=%s", r.URL.Path)
        }
    })
    log.Fatal(http.ListenAndServe(":"+port, nil))
}

在本地运行此代码,curl 请求发送到http://本地主机:8080 http://localhost:8080然后使用 ctrl-c 取消将在日志中显示为“上下文已取消”。与在云运行中部署并取消的服务相同的请求将在 1 分钟后在日志中显示为成功请求。


我认为 Cloud Run 如今无法提供这样的保证。

我猜这是因为实施细节。 Run 服务的外部流量不会直接进入容器,而是通过一个或多个负载均衡器和代理。这些负载均衡器/代理可能无法正确传播客户端断开连接(或者只是缓冲请求/响应)。这将导致您所看到的行为。

我将继续提交有关它的内部功能请求。感谢您提出来。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

请求取消不会传播到云运行容器 的相关文章

随机推荐

  • 将字符串从 Android 手机发送到 PC [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我怎样才能发送一个字符串 例如 hi 从我的 Android 手机传输到我的电脑 在 Android 中执行此操作之前 我建议您阅读
  • 如何通过单击一次在 jsFiddle 上的 jQuery 中获得简单的 ZeroClipboard 复制到剪贴板设置?

    我正在努力让 ZeroClipboard 在 jQuery 上下文中工作 我所追求的基本用法是剪切每个的文本div与班级copy单击时 以下 jsFiddle 使用稳定的 ZeroClipboard v1 3 3 进行双击工作 http j
  • 粘贴文本的 Emacs 编码

    我 偶尔 在 Windows 8 上使用 emacs24 3 当我遇到编码问题时粘贴文本 非 ASCII 字符被替换为它们的 uucode 我的 emacs 编码默认是 utf 8 我试图快速浏览一下 apropos 帮助 但没有任何内容与
  • 程序员什么时候使用空基优化(EBO)

    我正在阅读有关空基优化 EBO 的内容 阅读过程中 我的脑海中浮现出以下问题 使用空类作为基类有什么意义它对派生类没有任何贡献 无论是功能方面还是数据方面 In 我读到了这个 S为空类结构 T S 整数x 请注意 我们没有丢失任何数据或 代
  • 数据绑定中的 Html.fromHtml - Android

    我正在使用来自dataBinding在我的项目中 当我有以下情况时xml干得好
  • 如何在 MATLAB 中将 3 列矩阵绘制为颜色图?

    我有一个矩阵 其中包含一组 GPS 坐标的温度值 所以我的矩阵看起来像这样 Longitude Latitude Value 12 345678 23 456789 25 12 345679 23 456790 26 should be x
  • 使用具有命名范围的数组加速 VBA

    我有一个电子表格 我已经花了一个多月的时间来排序和优化坐标 有时超过 100 000 行 它是难以忍受一旦我开始导入超过 5 000 行的文件 速度就会变慢 需要几个小时才能完成超过 25 000 行的数据集的计算和排序过程 处理时间随着导
  • 如何在生产中防止 Ocp-Apim-Trace: true 和 ocp-apim-trace-location ?

    我了解当请求包括Ocp Apim Trace true像下面这样 GET api v1 BotConfig HTTP 1 1 Host xyz azure api net Cache Control no cache Ocp Apim Tr
  • 在 Windows 7 上使用 PhoneGap 创建 iPhone 应用程序

    C soft my app gt phonegap create something phonegap create called with the options C soft my app something com phonegap
  • 更改 Eclipse 3.5 中的用户代理以安装新软件

    如何在 Eclipse 3 5 中更改用户代理 我尝试添加属性 Dhttp agent 我的用户代理到 eclipse ini 文件 但使用 WireShark 我可以看到用户代理仍然雅加达 Commons HttpClient 3 1 我
  • 将 Scala Stream 转换为新 Stream,它是当前元素与前一个元素的总和

    如何转换整数的 Scala Stream 以便我们拥有一个新的 Stream 其中元素是该元素与前一个元素的总和 例如 如果输入流是 1 2 3 4 则输出流是 1 3 5 7 还有第二个问题 如何使总和使用输出流中的前一个 以便输出为 1
  • Python 多处理应用程序陷入 docker 容器中

    我正在尝试运行一个多处理 Python 应用程序来加速和并行我的任务 我的应用程序使用简单的多处理Pool并在资源有限的 docker 容器中运行 我注意到我的应用程序有时会卡住 它永远不会结束 终止 但没有任何移动 任务停止运行 没有日志
  • JSON解析swift,数组在NSURLSession之外没有值

    我正在尝试使用以下代码快速调用 json webservice 并将其显示在tableview在快速的IOS中 declared as global var IdDEc String string array declared global
  • TinyMCE UTF-8 保存到 MySQL 数据库

    我将 TinyMCE 输入发送到 POST 一个 php 文件 然后将其保存在 MySQL 数据库中 输入具有 UTF 8 土耳其字符 所以当我输入时T rk e在 TinyMCE 输入中并将其发送到 post PHP 后端收到此字符串 p
  • 枚举是否应该具有未初始化的值。

    我们正在争论枚举是否应该具有未初始化的值 例如 我们有 public enum TimeOfDayType Morning Afternoon Evening or public enum TimeOfDayType None Mornin
  • Logstash 文件输入插件

    目前 我正在使用文件输入插件来检查我的日志存档 但文件输入插件对我来说不是正确的解决方案 因为文件输入插件本质上期望该文件是事件流而不是静态文件 现在 这给我带来了很大的问题 因为我的日志存档有 100 000 多个日志文件 而我的 Log
  • 查找访问令牌的过期时间

    有什么方法可以使用图形 api 来查明页面访问令牌或应用程序令牌何时过期 Update 有一个新的 API 端点用于访问有关访问令牌的信息 您可以在这里找到信息 调试访问令牌和处理错误 https developers facebook c
  • 为什么 JavaScript 中带小数的最大位数只有 16

    不久前我在测试一些 HTML 表单时遇到了这个问题 JavaScript 中带小数点的数字的最大位数仅为 16 我尝试过以下方法 var x 12345678912345 6789 x 是 12345678912345 68 仅 16 位数
  • 使用 Conditional 属性标记仅返回任务的异步方法?

    The System Diagnostics ConditionalAttribute对于分割调试代码片段而不需要使用编译器指令确实很有用 但它只与返回的方法兼容void 有没有办法将它 或等效的东西 用于返回 a 的异步方法Task No
  • 请求取消不会传播到云运行容器

    当发送到云运行服务的 HTTP 请求被发起服务取消时 取消 关闭的连接不会传播到云运行容器内正在服务的请求 示例代码 package main import log net http os time func main port os Ge