Сигналы в Go. Обработка SIGTERM, SIGINT.

Ответ

Сигналы ОС можно перехватить через signal.Notify. SIGINT (Ctrl+C) и SIGTERM (kube stop) - типичные для graceful shutdown. В Go перехватывают в канал, в select с контекстом или каналом остановки; при получении отменяют контекст и завершают сервер (Shutdown), закрывают соединения.

sigCh := make(chan os.Signal, 1)
signal.Notify(sigCh, syscall.SIGINT, syscall.SIGTERM)
<-sigCh
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
srv.Shutdown(ctx)
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.