2016-11-30 2 views
0

私はPythonの薄い層を使ってMongoデータベースに接続します。私はPythonをC++から呼び、これはうまく動作します。pymongoが(たくさんの)産んでいる接続を待っているのはなぜですか?

だから、C++ - > Pythonの - >モンゴとバックのPythonへ - > C++

私はPyMongoを使用していると私は、Windowsの七つの上です。

私はモンゴデータベースはので、私はPythonで、このような何か稼働しているかどうかを知りたい:ときサーバー、(風変わりな戻り変数を心配しないでください)

client = MongoClient('localhost', 27017, serverSelectionTimeoutMS = 20) 
ret=[] 
try: 
    client.server_info() 
    ret.append("up") 
    client.close() 
except Exception as e: 
    ret.append("down") 

return ret 

しかし、これをUPで、プロセス(プロセス 'ハッカー' - >ネットワーク)が待機し、20ミリ秒後ではなくタイムアウトになるまで待ちますが、30秒です。データベースが稼働しているかどうかを確認すると、かなり頻繁に、何百もの座っている、待っている、プロセス/接続が得られます。

私は何か間違っているのですか、PyMongoがWindows上でうまく動作しませんか?

ありがとうございます!

+0

プロセスまたはスレッドが生成されますか?あなたのクライアントプログラムを監視しているWindowsのタスクマネージャから何かが生成されていることをどのように知っていますか?それとも、ムンゴのログに何かが見えていますか? –

+0

これはTCP/IP接続を開いているので(プロセスの何らかの形になると思います)、Process Hackers - > Networkタブに表示されます。 – Valmond

答えて

0

私はその周りに持って、この問題の本当の修正はないと思わとして、問題は/私は私が私の修正を共有したいと思った奇妙な問題が発生します可能性があること:

1:作成し、使用しますグローバル接続、接続したり閉じたりせずに、再利用してください。

グローバル接続

2がある場合、データベースは、アップまたはない最初のチェックであるかどうかをチェック:そう、それを使用する場合。それが落とされた(「決して」起こらないと、サーバーやハードウェアの障害が再起動したときのみ)、タイムアウトが長くなります。

3:存在しない場合は、serverSelectionTimeoutMS = 20のコードを使用して、別の待機中のスレッド/プロセスを生成せず、また高速です。

関連する問題