2017-10-22 7 views
1

私は分割されたスレッドでジョブを実行している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の公式ドッキングウィンドウの画像

答えて

1

で実行されているとは、サウンド。 PYTHONプロジェクトのjira.mongodb.orgでチケットを開き、表示されるエラーを再現する私たちのコンピュータで実行できる完全なコード例を提供してください:https://stackoverflow.com/help/mcve

ありがとう!

関連する問題