私は分割されたスレッドでジョブを実行しているPythonアプリケーションを持っています。 一部のworkerジョブは、データベース接続用にpymongoを実装しています。Pymongoはクライアントの終了後に "pymongo_kill_cursors_thread"を放棄しました
class Job(Thread):
...
self.client = MongoClient()
すべてのジョブには、ジョブが終了しようとしているとき
self.client.close()
が、呼び出された仕上げ方法を、持っています。 Assumablyが、これはすべての関連するスレッドを終了する必要がありますが、すべてのジョブの1つのスレッドが生存したまま: pymongo_kill_cursors_thread
私は複数のジョブを起動し、それらを仕上げていますように、これらのpymongo_kill_cursors_threadsは死ぬことはないと私は後に数百人にそれらを得ました
Result of threading.enumerate()
pymongoのclose()メソッドが正常にクリーンアップしない理由を私は知らない、でもこれはpymongoの場合:テストジョブが終了した後の短い時間が、ここでは、一例であり、またはmongodb問題。
self.client._kill_cursors_executor._thread.join(1)
しよう
は私はそれがデーモンであること、そのためのスレッドと実際のロック状態を考え、何の効果もありません。
感謝しています。どうもありがとうございました。 「PyMongo」を使用して
は、バージョン:それはバグかもしれないように、それは追加の診断を必要とするが、「3.5.1」のPython 3.6.1とMongoDBの公式ドッキングウィンドウの画像