Le framework Iris prend en charge l'arrêt en douceur. Dans des scénarios commerciaux réels, lorsque nous voulons redémarrer ou fermer l'application web, forcer directement le processus Go à s'arrêter peut facilement entraîner l'interruption de certains processus métier en cours sans achèvement, provoquant des exceptions métier. La meilleure approche consiste à cesser d'accepter de nouvelles demandes, à laisser les demandes en cours terminer le traitement, puis à quitter le processus Go.

Vous pouvez utiliser plusieurs méthodes pour effectuer un arrêt ou un redémarrage en douceur. Vous pouvez également utiliser des packages tiers spécifiquement conçus à cet effet, ou vous pouvez utiliser la méthode app.Shutdown(context.Context).

Enregistrez l'événement CTRL/CMD+C en utilisant iris.RegisterOnInterrupt :

idleConnsClosed := make(chan struct{})
iris.RegisterOnInterrupt(func() {
    timeout := 10 * time.Second
    ctx, cancel := stdContext.WithTimeout(stdContext.Background(), timeout)
    defer cancel()
    // fermer tous les hôtes.
    app.Shutdown(ctx)
    close(idleConnsClosed)
})

// [...]
app.Listen(":8080", iris.WithoutInterruptHandler, iris.WithoutServerError(iris.ErrServerClosed))
<-idleConnsClosed