ginebra reiniciar o detener con gracia

ginebra reiniciar o detener con gracia

Para reiniciar o detener correctamente su servidor web, utilice el siguiente método

Podemos usar fvbock / infinito para reemplazar el predeterminado ListenAndServe, vea el número 296 para más detalles

router := gin.Default()
router.GET("/", handler)
// [...]
endless.ListenAndServe(":4242", router)

Una alternativa

  • modales : un servidor HTTP de Go que se puede cerrar sin problemas
  • graceful : Graceful es un paquete go que admite el cierre ordenado del servidor http.Handler
  • gracia : reinicio elegante e implementación sin tiempo de inactividad del servidor Go

Si su versión de Go es 1.8, es posible que no necesite usar esta biblioteca, considere usar el método Shutdown () incorporado de http.Server para un apagado ordenado , vea el ejemplo

// +build go1.8

package main

import (
	"context"
	"log"
	"net/http"
	"os"
	"os/signal"
	"time"

	"github.com/gin-gonic/gin"
)

func main() {
	router := gin.Default()
	router.GET("/", func(c *gin.Context) {
		time.Sleep(5 * time.Second)
		c.String(http.StatusOK, "Welcome Gin Server")
	})

	srv := &http.Server{
		Addr:    ":8080",
		Handler: router,
	}

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

	// Wait for interrupt signal to gracefully shutdown the server with
	// a timeout of 5 seconds.
	quit := make(chan os.Signal)
	signal.Notify(quit, os.Interrupt)
	<-quit
	log.Println("Shutdown Server ...")

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

Supongo que te gusta

Origin blog.csdn.net/ma2595162349/article/details/109435072
Recomendado
Clasificación