Go で Jin サービスを適切にシャットダウンする方法
Go 言語の Web 開発フレームワーク Gin を使用して開発する場合、ポート リソースの解放やその他の操作を実行するために、Gin サービスを手動で閉じる必要がある場合があります。この記事では、Gin サービスを正しくシャットダウンする方法について説明します。
Gin のデフォルトの起動方法
Gin を使用する場合、通常は次のコードを使用して http サービスを開始します:
router := gin.Default() router.GET("/", func(c *gin.Context) { c.String(http.StatusOK, "Hello, Gin!") }) router.Run(":8080")
このサンプル コードは、デフォルトの Gin ルーター、Handles GET を起動します。 /
パスをリクエストし、文字列を返します。最後に、Run
メソッドを呼び出して、Gin サービスを開始し、ポート 8080 をリッスンします。
Run
メソッドは、ポートを継続的に監視し、要求と応答を処理できるように、常にメイン スレッドを占有するブロッキング呼び出しであることに注意してください。したがって、Gin サービスを手動でシャットダウンする必要がある場合は、非ブロッキング方式を使用してサービスを開始する必要があります。
Use http.Server
Gin を開始する
Gin サービスを手動でシャットダウンするには、Go の組み込み http.Server## を使用する必要があります。 #、http サービスを正常にシャットダウンできる
Shutdown メソッドを提供します。
http.Server を使用して Jin を起動するには、次の手順に従う必要があります。
- http.Server
インスタンスを作成し、リスナーのアドレスとジン ルーターをプロセッサとして設定します。
s := &http.Server{ Addr: ":8080", Handler: router, }
- http.Server
の
ListenAndServeメソッドが呼び出されるゴルーチンを開始します。 、Gin サービスを非同期的に開始します:
go func() { if err := s.ListenAndServe(); err != nil && err != http.ErrServerClosed { log.Fatalf("listen: %s\n", err) } }()
- Gin サービスをシャットダウンする必要がある場合は、
- http.Server
の
Shutdownメソッドを呼び出します。正常にシャットダウンできることを確認するため サービス:
if err := s.Shutdown(context.Background()); err != nil { log.Fatal("Server forced to shutdown:", err) }
package main import ( "context" "log" "net/http" "github.com/gin-gonic/gin" ) func main() { router := gin.Default() router.GET("/", func(c *gin.Context) { c.String(http.StatusOK, "Hello, Gin!") }) s := &http.Server{ Addr: ":8080", Handler: router, } go func() { if err := s.ListenAndServe(); err != nil && err != http.ErrServerClosed { log.Fatalf("listen: %s\n", err) } }() // 假设需要在 5 秒后关闭服务 <-time.After(5 * time.Second) if err := s.Shutdown(context.Background()); err != nil { log.Fatal("Server forced to shutdown:", err) } log.Println("Server shutdown gracefully") }
http.Server# に渡します。 ##、ListenAndServe
メソッドを使用して、Gin サービスを開始します。次に、ゴルーチンで http サービスを非同期に実行して、メインスレッドがブロックされていないことを確認します。最後に、メイン スレッドで 5 秒待ってから、Shutdown
メソッドを呼び出して、Gin サービスを正常にシャットダウンし、ログを出力します。 概要
この記事では、Gin サービスを正しくシャットダウンする方法を紹介します。Go の組み込み
http.Server を使用すると、http サービスを正常にシャットダウンし、問題を回避できます。突然のサービス停止の可能性、リソースの漏洩などの問題が発生する可能性があります。 もちろん、上記のコードは単なるサンプル コードであり、運用環境で直接使用することはお勧めできません。コードを参照する際には、実際の状況やニーズに応じて適切に修正、最適化する必要があります。
以上がGo で Jin サービスを適切にシャットダウンする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









OpenSSLは、安全な通信で広く使用されているオープンソースライブラリとして、暗号化アルゴリズム、キー、証明書管理機能を提供します。ただし、その歴史的バージョンにはいくつかの既知のセキュリティの脆弱性があり、その一部は非常に有害です。この記事では、Debian SystemsのOpenSSLの共通の脆弱性と対応測定に焦点を当てます。 Debianopensslの既知の脆弱性:OpenSSLは、次のようないくつかの深刻な脆弱性を経験しています。攻撃者は、この脆弱性を、暗号化キーなどを含む、サーバー上の不正な読み取りの敏感な情報に使用できます。

この記事では、プロファイリングの有効化、データの収集、CPUやメモリの問題などの一般的なボトルネックの識別など、GOパフォーマンスを分析するためにPPROFツールを使用する方法について説明します。

この記事では、GOでユニットテストを書くことで、ベストプラクティス、モッキングテクニック、効率的なテスト管理のためのツールについて説明します。

Go Crawler Collyのキュースレッドの問題は、Go言語でColly Crawler Libraryを使用する問題を調査します。 �...

バックエンド学習パス:フロントエンドからバックエンドへの探査の旅は、フロントエンド開発から変わるバックエンド初心者として、すでにNodeJSの基盤を持っています...

この記事では、go.modを介してGOモジュールの依存関係の管理、仕様、更新、競合解決をカバーすることについて説明します。セマンティックバージョンや定期的な更新などのベストプラクティスを強調しています。

この記事では、GOでテーブル駆動型のテストを使用して説明します。これは、テストのテーブルを使用して複数の入力と結果を持つ関数をテストする方法です。読みやすさの向上、重複の減少、スケーラビリティ、一貫性、および
