2016-10-17 4 views
0

Go SDKに付属のWebサーバーをシャットダウンする正しい方法は何ですか?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) 
} 

こちらのフォームを引っ張った:ここ

は、Webサービスの例ですhttps://golang.org/doc/articles/wiki/#tmp_3

しかし、私は、このサーバーを切断し、それが現在実行中のリクエストを切る持っているしたいと思います。これはどうですか?

+0

あなたはどのように行うのが基本的なアイデアを得るために、この[解答](http://stackoverflow.com/a/40041517/2285935)を見てみることができます。 –

答えて

1

github.com/braintree/mannersはまったく同じものです。あなたはソースを見ていますが、その要点は、受信接続ごとにインクリメントされ、完了時にデクリメントされるsync.WaitGroupです。あなたがマナーにサーバーを停止するように頼むと、誰もがドアから出るまで待ちます。

std libに厳密に固執する必要がある場合は、マナーの仕方からインスピレーションを得ることができますが、本当に素敵なパッケージであり、使用することをお勧めします。

関連する問題