私はpelongoを使って、多くの非同期タスクを実行するためにCeleryも使用するアプリケーションでmongodbにアクセスしています。私はpymongoの接続プールが非同期ワーカー(ドキュメントに基づいて)をサポートしていないことを知っています。Pymongo、Celeryによる接続プーリングと非同期タスク
コレクションにアクセスするには、アプリケーションに合った特定のロジックをラップするCollectionクラスが必要です。私はこのラッパーで継承したコードを理解しようとしています。
現在、各コレクションは独自のConnectionインスタンスを作成しています。私が読んでいることに基づいて、これは間違っています。実際には、(settings.pyなどで)1つのConnectionインスタンスがあり、それをCollectionインスタンスにインポートする必要があります。そのビットは明らかです。最大限の接続が推奨される限り、ガイドラインはありますか?現在のコードでは、プーリング機能を実際に使用していないため、たくさんの接続/ソケットが作成されています。
しかし、いくつかのコードは非同期セロリのタスクと同時に実行されるものから呼び出されるため、どのようにこれを処理するかはわかりません。私の考えは、タスク用の新しいConnectionインスタンスをインスタンス化し、同期インスタンス用に単一のものを使用することです(各アクティビティが終了した後のもちろん、ending_request)。これは正しい方向ですか?
ありがとう! pymongoのドキュメントから
ハレル