HTTP サーバーの実行終了アクションの処理
http.Handle で開始された HTTP サーバーは、終了時に特定のアクションを必要とすることがよくあります。この記事では、Linux システム上でこれらのアクションを効果的に実行するためのソリューションを検討します。
1 つのアプローチには、Unix 信号、特に Ctrl-C 割り込みによってトリガーされる SIGINT 信号を利用することが含まれます。 SIGINT のシグナル ハンドラーを登録すると、プロセスが終了する前にカスタム操作を実行できるようになります。
次のコードは、この方法を示しています。
import ( "log" "os" "os/signal" "syscall" ) func main() { sigchan := make(chan os.Signal, 1) signal.Notify(sigchan, syscall.SIGINT) go func() { <-sigchan // Wait for SIGINT signal log.Println("Program killed !") // Perform end-of-execution actions here // Wait for write operations to complete os.Exit(0) }() // Start HTTP server and associated tasks }
処理する専用の goroutine を設定することにより、 SIGINT 信号を受信すると、プライマリ goroutine はメイン プログラム タスクの実行に集中できます。 SIGINT を受信すると、専用の goroutine がクリーンアップ アクションをトリガーし、正常に終了できるようにします。
以上がLinux 上の Go HTTP サーバーで実行終了アクションを適切に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。