关闭Go SDK附带的web服务器的正确方法是什么?
下面是一个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
但是,我想拆掉这个服务器,让它排出所有当前正在运行的请求。这是怎么做的?
发布于 2016-10-18 05:28:59
这正是github.com/braintree/manners所做的。您可以查看源代码,但要点是它们有一个sync.WaitGroup,它在每个传入连接时都会递增,在完成时会递减。当你要求礼仪停止服务器时,它会等到所有人都离开了门。
如果您需要严格遵守std库,那么您可以从manners如何做到这一点上获得一些灵感,但它确实是一个很好的包,我建议您直接使用它。
https://stackoverflow.com/questions/40095371
复制相似问题