Код IT
← Каталог

Фреймворки и библиотеки Go — Обработка ошибок и graceful shutdown

Фрагмент из «Фреймворки и библиотеки Go»: Обработка ошибок и graceful shutdown.

Go main.go
srv := &http.Server{
    Addr:    ":8080",
    Handler: engine,
}

go func() {
    if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
        log.Fatalf("listen: %s\n", err)
    }
}()

// ... ожидание сигнала

ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
if err := srv.Shutdown(ctx); err != nil {
    log.Fatal("Server forced to shutdown:", err)
}
srv := &http.Server{
    Addr:    ":8080",
    Handler: engine,
}

go func() {
    if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
        log.Fatalf("listen: %s\n", err)
    }
}()

// ... ожидание сигнала

ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
if err := srv.Shutdown(ctx); err != nil {
    log.Fatal("Server forced to shutdown:", err)
}