http.TimeoutHandler返回,但是handlerfunc继续运行

问题描述 投票:1回答:1

[我正在测试我的Go Web服务器中的http.timeoutHandler,我注意到3秒钟后我的客户呼叫收到了“ Timeout”消息,但是2秒钟后,我可以在服务器上看到消息“我的func Println ”。为什么TimeoutHandler没有取消我的func1

这是我正在使用的代码:

package main

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

func func1(w http.ResponseWriter, req *http.Request) {
        time.Sleep(5 * time.Second)
        fmt.Println("My func Println")
        io.WriteString(w, "My func!\n")
}

func main() {
        srv := http.Server{
                Addr:         ":9000",
                WriteTimeout: 5 * time.Second,
                Handler:      http.TimeoutHandler(http.HandlerFunc(func1), 3*time.Second, "Timeout!\n"),
        }

        if err := srv.ListenAndServe(); err != nil {
                fmt.Printf("Server failed: %s\n", err)
        }
}
go
1个回答
0
投票

是的,这就是它的工作方式。

© www.soinside.com 2019 - 2024. All rights reserved.