PostgreSQL などのデータベースを利用する単純な Go Web アプリケーションでは、データベース接続を閉じるタイミングが考慮事項になります。ここでは、無期限に実行されるアプリケーションでこれをいつどのように処理するかを詳しく説明します。
問題:
次の簡略化された Go Web アプリケーション コードを考えてみましょう:
<code class="go">var db *sql.DB func main() { var err error db, err = sql.Open("postgres", "...") if err != nil { log.Fatalf("Couldn't connect to the database: %v", err) } http.HandleFunc("/whatever", whateverHandler) http.ListenAndServe("127.0.0.1:8080", nil) }</code>
質問が生じます: DB 接続で Close() メソッドをいつ呼び出す必要がありますか?
答え:
この特定のシナリオでは、接続プログラムが終了すると自動的に終了します。ただし、他の考慮事項により、手動での処理が必要になる場合があります。
オプション 1: 暗黙的な終了
プログラムは終了時にデータベース接続を閉じるため、を呼び出す必要はありません。明示的に Close() します。
オプション 2: 正常なサーバーのシャットダウン
より複雑なアプリケーションの場合は、github.com/grpc-ecosystem/ などの正常なサーバーの使用を検討してください。 go-grpc-middleware/server。これにより、リソースのクローズを延期し、シグナルの受信時に完全にシャットダウンできます。
オプション 3: 手動シャットダウン
もう 1 つのアプローチには、シグナルのキャッチが含まれます。手動シャットダウンメカニズムの実装。これは、リソースの閉鎖をきめ細かく制御するのに役立ちます。たとえば、終了チャネルを使用して、プログラムが終了する前にリソースを解放するようにゴルーチンに通知できます。
結論:
特定のアプリケーションの要件と複雑さに基づいて、 Go Web アプリケーションでデータベース接続の終了を処理するための複数のオプションがあります。適切なアプローチを選択すると、適切なクリーンアップが保証され、リソースのリークが防止されます。
以上がGo Web Apps でデータベース接続を閉じる必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。