graceful shutdown for martini
This package provides graceful shutdown to the martini application.
package main
import (
"github.com/go-martini/martini"
"github.com/rosylilly/martini-graceful"
"log"
"syscall"
"time"
)
func main() {
m := martini.Classic()
gs := graceful.New(10 * time.Second, syscall.SIGTERM, syscall.SIGINT)
m.Use(gs.Handler)
m.Get("/", func() string {
time.Sleep(5 * time.Second)
return "hello world\n"
})
err := gs.RunGracefully(m)
if err != nil {
log.Println(err)
}
}
Or:
package main
import (
"github.com/go-martini/martini"
"github.com/rosylilly/martini-graceful"
"log"
"syscall"
"time"
)
func main() {
m := martini.Classic()
gs := graceful.New(10 * time.Second, syscall.SIGTERM, syscall.SIGINT)
m.Use(gs.Handler)
m.Get("/", func() string {
time.Sleep(5 * time.Second)
return "hello world\n"
})
go func() {
m.RunOnAddr(":8080")
}()
err := gs.Wait()
if err != nil {
log.Println(err)
}
}
MIT Lisence