5

やったほうがいいですか

from pymongo import Connection

conn = Connection()
db = conn.db_name

def contrivedExample(firstName)
    global db
    return db.people.find_one({'first-name': firstName})

また

from pymongo import Connection

def contrivedExample(firstName):
    with Connection() as conn:
        return conn.db_name.people.find_one({'first-name': firstName})

さまざまな基本的なMongoDBチュートリアル(Python指向かどうかに関係なく)は、アプリが起動時に1回接続する必要があることを示しています。それは実際にそうですか?自明ではない、実行時間の長いアプリケーションの答えは変わりますか?特にWebアプリケーションの答えは変わりますか?単一接続とリクエストごとの接続の長所/短所は何ですか?

「起動時に1回」が正しい答えであると仮定すると、その接続をで開始するのが適切でしょう__init__.pyか?

4

1 に答える 1

4

pymongo Connectionクラスは接続プーリングをサポートしており、バージョン2.2以降、このauto_start_requestオプションにより、スレッドの存続期間中の接続アクティビティに同じソケットが使用されるようになります(デフォルトの動作)。さらに、アプリケーションコードは即時例外を処理する必要がありますが、必要に応じて再接続するための組み込みサポートがあります。

あなたの質問に対して、私はpymongo自身の接続プールに依存し、スレッドごとに新しい接続を要求することが望ましいと思います。このStackOverflowスレッドでは、いくつかのベストプラクティスについても説明し、役立つと思われるいくつかのオプションについて説明しています。必要に応じて、スレッド間で同じソケットを共有するオプションがあります。

于 2012-10-12T18:30:22.923 に答える