galched-bot/modules/grace/graceful.go

27 lines
401 B
Go
Raw Normal View History

package grace
import (
"context"
"log"
"os"
"os/signal"
"syscall"
)
func NewGracefulContext() context.Context {
ctx, cancel := context.WithCancel(context.Background())
go func() {
ch := make(chan os.Signal, 1)
signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM)
select {
case <-ch:
log.Print("ctx: caught interrupt signal")
cancel()
case <-ctx.Done():
}
}()
return ctx
}