You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Mura Li d77176912b Use Go1.11 module (#5743)
* 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
5 years ago
..
.travis.yml Use Go1.11 module (#5743) 5 years ago
httpdown.go Support http service graceful restart (#416) 8 years ago
license Support http service graceful restart (#416) 8 years ago
patents Support http service graceful restart (#416) 8 years ago
readme.md Use Go1.11 module (#5743) 5 years ago

readme.md

httpdown Build Status

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 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
    
  2. 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
    
  3. In a second terminal start a slow HTTP request

     curl 'http://localhost:8080/?duration=20s'
    
  4. 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.