MongoDBインスタンスのクライアントが有効かどうかを確認するにはどうすればよいですか?

空にする :

特に、私は現在、次の関数を使用してクライアントへの接続が有効かどうかを確認しようとしています。

def mongodb_connect(client_uri):
    try:
        return pymongo.MongoClient(client_uri)
    except pymongo.errors.ConnectionFailure:
         print "Failed to connect to server {}".format(client_uri)

次に、この関数を次のように使用します。

def bucket_summary(self):
    client_uri = "some_client_uri"
    client = mongodb_connect(client_uri)
    db = client[tenant_id]
    ttb = db.timebucket.count() # If I use an invalid URI it hangs here

無効なURIが指定された場合、最後の行で例外をキャッチしてスローする方法はありますか?最初はそれがConnectionFailureの目的だと思っていましたが(接続時にこれが検出される可能性があります)、私は間違っていました。

実行に失敗した無効なURIでプログラムを実行した場合、KeyboardInterruptを発行すると次の結果が得られます。

File "reportjob_status.py", line 58, in <module>
tester.summarize_timebuckets()
File "reportjob_status.py", line 43, in summarize_timebuckets
ttb = db.timebucket.count() #error
File "/Library/Python/2.7/site-packages/pymongo/collection.py", line   1023, in count
return self._count(cmd)
File "/Library/Python/2.7/site-packages/pymongo/collection.py", line 985, in _count
with self._socket_for_reads() as (sock_info, slave_ok):
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/contextlib.py", line 17, in __enter__
return self.gen.next()
File "/Library/Python/2.7/site-packages/pymongo/mongo_client.py", line 699, in _socket_for_reads
with self._get_socket(read_preference) as sock_info:
File  "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/contextlib.py", line 17, in __enter__
return self.gen.next()
File "/Library/Python/2.7/site-packages/pymongo/mongo_client.py", line 663, in _get_socket
server = self._get_topology().select_server(selector)
File "/Library/Python/2.7/site-packages/pymongo/topology.py", line 121, in select_server
address))
File "/Library/Python/2.7/site-packages/pymongo/topology.py", line 106, in select_servers
self._condition.wait(common.MIN_HEARTBEAT_INTERVAL)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 358, in wait
_sleep(delay)
シルヴァン・ルルー:

serverSelectionTimeoutMSキーワードパラメータはpymongo.mongo_client.MongoClient、ドライバがサーバーへの接続を試行する時間制御します。デフォルト値は30秒​​です。

通常の接続時間と互換性のある非常に低い値に設定して、すぐにエラーを報告してください。その後、接続試行をトリガーするためにDBをクエリする必要があります。

>>> maxSevSelDelay = 1 # Assume 1ms maximum server selection delay
>>> client = pymongo.MongoClient("someInvalidURIOrNonExistantHost",
                                 serverSelectionTimeoutMS=maxSevSelDelay)
//                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>> client.server_info()

これが発生しpymongo.errors.ServerSelectionTimeoutErrorます。

¹ どうやら設定serverSelectionTimeoutMS0特定のケースでは、あなたのサーバは非常に低いレイテンシー(例えば非常に軽い負荷で、「ローカル」サーバーの場合)を持っているかもしれないでも仕事を


その例外をキャッチして適切に処理するかどうかは、あなた次第です。そのような何か

try:
    client = pymongo.MongoClient("someInvalidURIOrNonExistantHost",
                                     serverSelectionTimeoutMS=maxSevSelDelay)
    client.server_info() # force connection on a request as the
                         # connect=True parameter of MongoClient seems
                         # to be useless here 
except pymongo.errors.ServerSelectionTimeoutError as err:
    # do whatever you need
    print(err)

表示されます:

No servers found yet

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

スイートアラート2の入力で確認ボタンを有効にするにはどうすればよいですか?

分類Dev

Select2インスタンスの現在の状態が有効か無効かを確認するにはどうすればよいですか?

分類Dev

アライメントがCで有効かどうかを確認するにはどうすればよいですか?

分類Dev

クラス内の共有ポインタの有効性を確認するにはどうすればよいですか?

分類Dev

Goでスライスに特定のインデックスがあるかどうかを確認するにはどうすればよいですか?

分類Dev

オブジェクトがインスタンス `Type`であるかどうかを確認するにはどうすればよいですか?

分類Dev

コマンドラインからスワップがアクティブかどうかを確認するにはどうすればよいですか?

分類Dev

JVMにクラスのインスタンスが1つしかないことを確認するにはどうすればよいですか?

分類Dev

特定のパンダインデックスにデータが存在するかどうかを確認するにはどうすればよいですか?

分類Dev

テーブルに列ストアインデックスがあるかどうかを確認するにはどうすればよいですか?

分類Dev

クライアント側のYouTubeに動画が存在するかどうかを確認するにはどうすればよいですか

分類Dev

Linuxの場合:NICインターフェースが有効でプラグインされているかどうかをプログラムで確認するにはどうすればよいですか?

分類Dev

特定のプログラムがインストールされているかどうかを確認するにはどうすればよいですか?

分類Dev

特定のプログラムがインストールされているかどうかを確認するにはどうすればよいですか?

分類Dev

DHCPクライアントの機能を確認するにはどうすればよいですか?

分類Dev

ファイヤーストアドキュメントの配列が空かどうかを確認するにはどうすればよいですか?

分類Dev

どのサブクラスがコンストラクターに渡されたかを確認するにはどうすればよいですか?

分類Dev

Djangoモデルインスタンスがルートであるかどうかを確認するにはどうすればよいですか?

分類Dev

タスクバーのこのアイコンが何であるかを確認するにはどうすればよいですか?

分類Dev

systemdがデバイスをアンマウントしているかどうかを確認するにはどうすればよいですか?(なぜ?)

分類Dev

プリンターがインストールされているかどうかを確認するにはどうすればよいですか?

分類Dev

BitTorrent同期リモートクライアントが同期されているかどうかを確認するにはどうすればよいですか

分類Dev

ドキュメントがluceneインデックスに存在するかどうかを確認するにはどうすればよいですか?

分類Dev

Vaadin 14 Webアプリでビュークラスのインスタンス化が発生する前に、承認を確認するリクエストを傍受するにはどうすればよいですか?

分類Dev

Discordボットのインスタンスがいくつ実行されているかを確認するにはどうすればよいですか?

分類Dev

どのソフトウェアがubuntuにインストールされているかを確認するにはどうすればよいですか?

分類Dev

どのソフトウェアがubuntuにインストールされているかを確認するにはどうすればよいですか?

分類Dev

ポインタ/アドレスが動的に割り当てられているかどうかを確認するにはどうすればよいですか?

分類Dev

JavaScriptでクライアントブラウザのパフォーマンスを確認するにはどうすればよいですか?

Related 関連記事

  1. 1

    スイートアラート2の入力で確認ボタンを有効にするにはどうすればよいですか?

  2. 2

    Select2インスタンスの現在の状態が有効か無効かを確認するにはどうすればよいですか?

  3. 3

    アライメントがCで有効かどうかを確認するにはどうすればよいですか?

  4. 4

    クラス内の共有ポインタの有効性を確認するにはどうすればよいですか?

  5. 5

    Goでスライスに特定のインデックスがあるかどうかを確認するにはどうすればよいですか?

  6. 6

    オブジェクトがインスタンス `Type`であるかどうかを確認するにはどうすればよいですか?

  7. 7

    コマンドラインからスワップがアクティブかどうかを確認するにはどうすればよいですか?

  8. 8

    JVMにクラスのインスタンスが1つしかないことを確認するにはどうすればよいですか?

  9. 9

    特定のパンダインデックスにデータが存在するかどうかを確認するにはどうすればよいですか?

  10. 10

    テーブルに列ストアインデックスがあるかどうかを確認するにはどうすればよいですか?

  11. 11

    クライアント側のYouTubeに動画が存在するかどうかを確認するにはどうすればよいですか

  12. 12

    Linuxの場合:NICインターフェースが有効でプラグインされているかどうかをプログラムで確認するにはどうすればよいですか?

  13. 13

    特定のプログラムがインストールされているかどうかを確認するにはどうすればよいですか?

  14. 14

    特定のプログラムがインストールされているかどうかを確認するにはどうすればよいですか?

  15. 15

    DHCPクライアントの機能を確認するにはどうすればよいですか?

  16. 16

    ファイヤーストアドキュメントの配列が空かどうかを確認するにはどうすればよいですか?

  17. 17

    どのサブクラスがコンストラクターに渡されたかを確認するにはどうすればよいですか?

  18. 18

    Djangoモデルインスタンスがルートであるかどうかを確認するにはどうすればよいですか?

  19. 19

    タスクバーのこのアイコンが何であるかを確認するにはどうすればよいですか?

  20. 20

    systemdがデバイスをアンマウントしているかどうかを確認するにはどうすればよいですか?(なぜ?)

  21. 21

    プリンターがインストールされているかどうかを確認するにはどうすればよいですか?

  22. 22

    BitTorrent同期リモートクライアントが同期されているかどうかを確認するにはどうすればよいですか

  23. 23

    ドキュメントがluceneインデックスに存在するかどうかを確認するにはどうすればよいですか?

  24. 24

    Vaadin 14 Webアプリでビュークラスのインスタンス化が発生する前に、承認を確認するリクエストを傍受するにはどうすればよいですか?

  25. 25

    Discordボットのインスタンスがいくつ実行されているかを確認するにはどうすればよいですか?

  26. 26

    どのソフトウェアがubuntuにインストールされているかを確認するにはどうすればよいですか?

  27. 27

    どのソフトウェアがubuntuにインストールされているかを確認するにはどうすればよいですか?

  28. 28

    ポインタ/アドレスが動的に割り当てられているかどうかを確認するにはどうすればよいですか?

  29. 29

    JavaScriptでクライアントブラウザのパフォーマンスを確認するにはどうすればよいですか?

ホットタグ

アーカイブ