首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >取消请求不会传播到云运行容器

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

Stack Overflow用户
提问于 2019-06-04 00:58:10
回答 1查看 97关注 0票数 1

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

示例代码:

代码语言:javascript
复制
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))
}

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

EN

回答 1

Stack Overflow用户

发布于 2019-06-04 01:50:49

我不认为Cloud Run现在能提供这样的保证。

我猜这是因为实现细节的原因。到运行服务的外部流量不会直接到达容器,而是通过一个或多个负载均衡器和代理。这些LB/代理可能没有正确地传播客户端断开连接(或简单地缓冲请求/响应)。这将导致您所看到的行为。

我将继续并提交关于它的内部功能请求。谢谢你提出来。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56431629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档