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