注:これがこの投稿の最も正確なタイトルかどうかはわかりません。そうでない場合は、より適切なタイトルを教えてください。
現在、いくつかのハンドラーを持つサーバーを作成しています ( gojiを使用)。リクエストを受け取った後、私が持っている MongoDB データベースとやり取りしたい ( mgoを使用)。私の質問は:
リクエストを処理するたびにこの種のことを行うのは費用がかかると想定しています。
uri := os.Getenv("MONGOHQ_URL")
if uri == "" {
panic("no DB connection string provided")
}
session, err := mgo.Dial(uri)
では、ハンドラー内からアクセスできるグローバル var を用意した方がよいでしょうか? だから私はこのようなものに行きます:
var session *mgo.Session
func main() {
session = setupDB()
defer session.Close()
goji.Get("/user", getUser)
goji.Serve()
}
func getUser(c web.C, w http.ResponseWriter, r *http.Request) {
// Use the session var here
}
私の質問は、ここでのベストプラクティスは何ですか? リクエストが来るたびに DB を開くか、アプリケーションの全期間にわたって DB を開いたままにします。