标签: server-timing

防止 HTTP 200 OK 超出上下文截止时间(等待标头时超出 Client.Timeout)错误

我有一个客户端和服务器。服务器处理请求超过2秒。但客户没有那么多时间。它需要在1秒内得到响应。这就是为什么它响应

获取“http://localhost:8888”:超出上下文截止时间(等待标头时超出 Client.Timeout)恐慌:运行时错误:无效的内存地址或 nil 指针取消引用

问题?如何更改 server.go 以便正确恢复所有错误并且端点始终可用? 请注意,客户端调用的端点应尽快处理请求,并在完成后立即返回 200 OK。

客户端.go

package main

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

func main() {

    c := &http.Client{Timeout: 2 * time.Second}

    res, err := c.Get("http://localhost:8888")
    if err != nil {
        log.Println(err)
    }
    var r []byte

    _, err = res.Body.Read(r)
    fmt.Println(string(r))
}
Run Code Online (Sandbox Code Playgroud)

服务器.go

package main

import (
    "fmt"
    "io"
    "net/http"
    "time"
)

func slowHandler(w http.ResponseWriter, req *http.Request) {
    time.Sleep(2 * time.Second)
    io.WriteString(w, "I am slow!\n")
}

func main() {
    srv := …
Run Code Online (Sandbox Code Playgroud)

tcp go server-timing

5
推荐指数
1
解决办法
7万
查看次数

标签 统计

go ×1

server-timing ×1

tcp ×1