Maison > développement back-end > Golang > Comment implémenter un arrêt progressif pour un serveur HTTP sous Linux ?

Comment implémenter un arrêt progressif pour un serveur HTTP sous Linux ?

Linda Hamilton
Libérer: 2024-12-16 00:58:09
original
722 Les gens l'ont consulté

How to Implement Graceful Shutdown for an HTTP Server on Linux?

Arrêt progressif du serveur http sous Linux

Lors de l'exécution d'un serveur http, il est souvent nécessaire d'effectuer certaines opérations avant la fermeture du serveur. Cela peut être fait en utilisant le mécanisme de signal Unix.

Une façon de procéder consiste à utiliser le package os.Signal dans Go :

package main

import (
    "fmt"
    "log"
    "net/http"
    "os"
    "os/signal"
)

func main() {
    // Create a new http server.
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Hello, World!")
    })

    go func() {
        // Start the server.
        log.Fatal(http.ListenAndServe(":8080", nil))
    }()

    // Create a channel to receive os signals.
    sigchan := make(chan os.Signal)
    signal.Notify(sigchan, os.Interrupt)

    // Block until a signal is received.
    <-sigchan

    // Perform shutdown operations.
    log.Println("Shutting down server...")

    // Close the server.
    err := http.CloseServer(http.DefaultServer)
    if err != nil {
        log.Fatal(err)
    }

    // Exit the program.
    os.Exit(0)
}
Copier après la connexion

Ce code créera un nouveau serveur http et écoutez sur le port 8080. Lorsque le programme reçoit un signal d'interruption (par exemple, Ctrl C), il effectuera les opérations d'arrêt, qui dans ce cas incluent la fermeture du serveur et la sortie du serveur. programme.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal