ホームページ > バックエンド開発 > Golang > Linux 上の HTTP サーバーの正常なシャットダウンを実装するにはどうすればよいですか?

Linux 上の HTTP サーバーの正常なシャットダウンを実装するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-16 00:58:09
オリジナル
727 人が閲覧しました

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

Linux 上の http サーバーの正常なシャットダウン

http サーバーを実行している場合、多くの場合、サーバーが終了する前に特定の操作を実行する必要があります。これは、Unix シグナル メカニズムを使用して行うことができます。

これを行う 1 つの方法は、Go で os.Signal パッケージを使用することです。

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)
}
ログイン後にコピー

このコードは、新しい http サーバーを作成し、ポート 8080 でリッスンします。プログラムが割り込み信号 (Ctrl C など) を受信すると、シャットダウン操作が実行されます。この場合、サーバーを閉じたり、システムを終了したりすることが含まれます。プログラム。

以上がLinux 上の HTTP サーバーの正常なシャットダウンを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート