gpt4 book ai didi

go - 如何正确停止Go sdk自带的web-server?

转载 作者:数据小太阳 更新时间:2023-10-29 03:14:37 26 4
gpt4 key购买 nike

关闭 Go SDK 附带的 Web 服务器的正确方法是什么?

这是一个示例网络服务:

package main

import (
"fmt"
"net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])
}

func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}

这是从这里提取的:https://golang.org/doc/articles/wiki/#tmp_3

但是,我想拆除此服务器并让它排出所有当前正在运行的请求。这是怎么做到的?

最佳答案

这正是github.com/braintree/manners做。您查看了源代码,但要点是它们有一个 sync.WaitGroup,它会随着每个传入连接递增,并在完成时递减。当您要求停止服务器时,它会一直等到所有人都离开了门。

如果您需要严格遵守 std 库,那么您可以从 manners 的做法中汲取一些灵感,但它是一个非常好的包,我建议只使用它。

关于go - 如何正确停止Go sdk自带的web-server?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40095371/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com