私は現在、分散コンピューティングに取り組んでいます。 私のワーカーは結果をmongoDBデータベースに挿入して返します。コードは正常に動作しますが、接続は開いたままで、システムのソケットが不足しています。 はここに私のワーカーのコードである:このコマンドを使用することによりpymongoを強制的にソケットを閉じることができますか?
def worker(elt):
client=pymongo.MongoClient(MONGODB_URI)
db = client.get_default_database()
essaiElt = db['essaiElt']
#compute here
essaiElt.insert(elt.toDict())
client.close()
「netstatコマンド-anbo」私はまだ開かれたすべてのソケットを見ることができる(以上3000)、労働者の最大数は14ですが、彼らはより多くに対処する必要があり10 000タスクより
...
TCP 10.130.151.11:4999 10.130.137.128:27017 En attente 0
TCP 10.130.151.11:5000 10.130.137.128:27017 En attente 0
私はタイムアウトを設定しようとしましたが、何の効果もありません。
私のデータベースを再起動せずにソケットを閉じるにはどうしたらいいですか?
のPython 2.7.12 Pymongo 3.3 MongoDBの3.2.10
「ここで計算する」セクションの実行時間はどのくらいですか?単一のPythonプロセスは、プロセスが終了する前に、多くのドキュメントをデータベースに挿入するか、1つだけ挿入しますか? –
「ここで計算する」セクションの実行時間はどのくらいですか? 実際は空です。 1つのPythonプロセスは、プロセスが終了する前に、多数のドキュメントをデータベースに挿入するか、1つだけ挿入しますか? ワーカーはppライブラリ(並列Python)で管理されます それで、タスクを取得し、ソケットを作成し、要素を挿入し、ソケットを閉じて、同じことをもう一度行うために別のタスクを取得します。したがって、一人の作業者が最終的に多くのソケットを作成します。 –