Go 1.8 で net/http パッケージに Server.Shutdown メソッドが追加されます。 シグネチャはこちら: srv := &http.Server{Addr: ":8080"} // サーバはブロックするので別の goroutine で実行する go func() { if err := srv.ListenAndServe(); err != nil { log.Print(err) } }() // シグナルを待つ sigCh := make(chan os.Signal, 1) signal.Notify(sigCh, syscall.SIGTERM) <-sigCh // シグナルを受け取ったらShutdown ctx, _ := context.WithTimeout(context.Background(), 5*time.Second) if err :
![Go 1.8 の HTTP Server Graceful Shutdown を試す - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/e71280e2720a7f2585c0f398e4b8c34e6b4c6640/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Fadvent-calendar-ogp-background-7940cd1c8db80a7ec40711d90f43539e.jpg%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9R28lMjAxLjglMjAlRTMlODElQUUlMjBIVFRQJTIwU2VydmVyJTIwR3JhY2VmdWwlMjBTaHV0ZG93biUyMCVFMyU4MiU5MiVFOCVBOSVBNiVFMyU4MSU5OSZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzM0EzQzNDJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnM9MDM0ODdiYzkxY2RhNmRjZjdkYjZiZmI0OGY5ZTM0OTY%26mark-x%3D120%26mark-y%3D96%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9OTcyJnR4dD0lNDBuYWplaXJhJnR4dC1jb2xvcj0lMjMzQTNDM0MmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1iM2RlNTYzZDU1ZWE5MWYyMGFjNTE3YjVmMWUwMDRhMQ%26blend-x%3D120%26blend-y%3D500%26blend-mode%3Dnormal%26s%3Da52e6e4a4d00e2d43875d9e5e1d5b77d)