为了账号安全,请及时绑定邮箱和手机立即绑定

我正常停止http.ListenAndServe失败

我正常停止http.ListenAndServe失败

Go
临摹微笑 2021-04-09 22:18:02
我是Go程序员的新手。我正在编写一个Web应用程序,我需要服务器等待活动请求发出后再关闭。我写了一个处理程序,等待5秒钟回答。如果我发出请求并停止服务器(在5秒钟之前),则会收到“无法连接”错误。有没有一种方法可以停止监听新请求并等待活动请求完成?这是我的例子func main() {    log.Infof("Starting (PID %d)...", os.Getpid())    stop := make(chan os.Signal, 1)    signal.Notify(stop, syscall.SIGTERM)    signal.Notify(stop, syscall.SIGINT)    listenAt := "127.0.0.1:8000"    r := newRouter()    h := &http.Server{Addr: listenAt, Handler: r}    go func() {        log.Info("Serving on http://", listenAt)        if err := h.ListenAndServe(); err != nil {            log.Fatal(err)        }    }()    <-stop    log.Info("Stoping ...")    h.Shutdown(context.Background())    log.Info("Bye :)")}示例处理程序func handler(w http.ResponseWriter, r *http.Request) {    time.Sleep(5 * time.Second)    log.Info("new request")    fmt.Fprintf(w, "Hola!")}完整示例@ https://gist.github.com/nachopro/d80fa71ae49527e1ddcaf359b4ff488b
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 480 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信