ホームページ > バックエンド開発 > Golang > 「defer」キーワードと SIGINT シグナルを使用して Go で正常なシャットダウンを実装するにはどうすればよいですか?

「defer」キーワードと SIGINT シグナルを使用して Go で正常なシャットダウンを実装するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-23 09:44:10
オリジナル
852 人が閲覧しました

How Can I Implement Graceful Shutdown in Go Using the `defer` Keyword and SIGINT Signals?

「遅延」アプローチを使用した正常なシャットダウンのための SIGINT 信号のキャプチャ

アプリケーションのクリーンなシャットダウンを維持するには、ユーザーの中断を処理することが重要です。一般的なシナリオの 1 つは、終了する前にクリーンアップ タスクを実行するために SIGINT シグナル (Ctrl C) をキャプチャすることです。

SIGINT をキャプチャするには、次の os/signal パッケージを利用できます。ゴラン。その方法は次のとおりです。

import (
    "fmt"
    "os"
    "os/signal"
    "time"
)

func cleanup() {
    fmt.Println("Performing cleanup operations...")
}

func main() {
    c := make(chan os.Signal, 1)
    signal.Notify(c, os.Interrupt)

    defer cleanup() // Schedule cleanup function to run before main exits

    for {
        // Do stuff
        time.Sleep(time.Second)
    }
}
ログイン後にコピー

Ctrl C を押すと、SIGINT シグナルがプログラムに送信されます。 main 関数は、チャネル c を通じてこの信号をキャプチャします。 defer キーワードのおかげで、クリーンアップ関数はプログラムが終了する前に実行されるようにスケジュールされています。これにより、ループ内の未処理の操作の後にクリーンアップ タスクが確実に実行されます。

アプリケーションのニーズに合わせてクリーンアップ関数の動作をカスタマイズできます。たとえば、これを使用して、未保存のデータを保存したり、接続を閉じたり、その他の必要なタスクを実行したりできます。

以上が「defer」キーワードと SIGINT シグナルを使用して Go で正常なシャットダウンを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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