7

Apache + mod_wsgiの上にPostgreSQLに接続されたDjangoの標準(NonRelではなく)バージョンを使用しています。このセットアップはMongoDBにも接続します(一部のデータは外部に保存されます)。今のところ、Djangoリクエストごとに新しいMongoDB接続を作成し、それを呼び出しスタック全体で、MongoDBへのアクセスを必要とするすべての関数に渡す必要があります。リクエスト間の接続をキャッシュする方法はありますか?

編集

冒涜の危険を冒して、この場合、グローバル変数は機能しますか?

4

2 に答える 2

5

pymongoがmod_wsgiでどのように機能する(または失敗する)かを説明するいくつかの方法があります。ここで提案されています:http ://api.mongodb.org/python/current/faq.html?highlight = wsgi#does-pymongo-work-with-mod -wsgi

さらに、ここで説明されているような、ある種のプーリングソリューションを使用できます:http ://www.mongodb.org/display/DOCS/Notes+on+Pooling+for+Mongo+Drivers

私がすでにプーリングを持っていることを知っているプロジェクトの1つは、 MongoEngineです。これは、舞台裏でpymongoを使用する非常に単純なORMです。上記のpymongoのよくある質問の解決策と一緒にそれを調べたいと思うかもしれません。

于 2012-06-14T13:26:28.703 に答える
3

pymongo.connection.Connection()必要なときに毎回呼び出すのではなく、どこかでMongoDB接続をインスタンス化してインポートできます。または、これを行うためにシングルトンを作成することもできます。でこのようなものsettings.py

class ConnectionSingleton(object):
    """Represents a MongoDB connection"""
    conn=None
    def __new__(cls,*args,**kwds):
        if cls.conn is None:
            cls.conn=pymongo.connection.Connection()
        return cls.conn

これで問題は解決しませんか?

于 2012-06-14T14:01:14.363 に答える