d77176912b
* Migrate to go modules * make vendor * Update mvdan.cc/xurls * make vendor * Update code.gitea.io/git * make fmt-check * Update github.com/go-sql-driver/mysql * make vendor
41 lines
1.4 KiB
Markdown
41 lines
1.4 KiB
Markdown
httpdown [![Build Status](https://secure.travis-ci.org/facebookgo/httpdown.png)](https://travis-ci.org/facebookgo/httpdown)
|
|
========
|
|
|
|
Documentation: https://godoc.org/github.com/facebookgo/httpdown
|
|
|
|
Package httpdown provides a library that makes it easy to build a HTTP server
|
|
that can be shutdown gracefully (that is, without dropping any connections).
|
|
|
|
If you want graceful restart and not just graceful shutdown, look at the
|
|
[grace](https://github.com/facebookgo/grace) package which uses this package
|
|
underneath but also provides graceful restart.
|
|
|
|
Usage
|
|
-----
|
|
|
|
Demo HTTP Server with graceful termination:
|
|
https://github.com/facebookgo/httpdown/blob/master/httpdown_example/main.go
|
|
|
|
1. Install the demo application
|
|
|
|
go get github.com/facebookgo/httpdown/httpdown_example
|
|
|
|
1. Start it in the first terminal
|
|
|
|
httpdown_example
|
|
|
|
This will output something like:
|
|
|
|
2014/11/18 21:57:50 serving on http://127.0.0.1:8080/ with pid 17
|
|
|
|
1. In a second terminal start a slow HTTP request
|
|
|
|
curl 'http://localhost:8080/?duration=20s'
|
|
|
|
1. In a third terminal trigger a graceful shutdown (using the pid from your output):
|
|
|
|
kill -TERM 17
|
|
|
|
This will demonstrate that the slow request was served before the server was
|
|
shutdown. You could also have used `Ctrl-C` instead of `kill` as the example
|
|
application triggers graceful shutdown on TERM or INT signals.
|