簡體   English   中英

rs.stepDown使用pymongo

[英]rs.stepDown using pymongo

我正在嘗試使用python腳本退出MongoDB primary。我在輸出中看到以下內容。 有沒有一種方法可以將退出代碼標記為“確定”。

碼:

 if 'primary' in isMaster:
        primary =(isMaster['primary']).split(':')[0]
        conn = pymongo.MongoClient('mongodb://'+ primary +':10000 replicaSet=test-ipe1')
        stepdown = conn.admin.command("replSetStepDown",100)
        if 'ismaster' in isMaster == 'true':
            print("I am still the primary")
        else:
            print("I am no longer the primary")
    else:
        primary = "No primary currently elected."

追溯:

Traceback (most recent call last):

File "./repldown.py", line 39, in <module>
    stepdown = conn.admin.command("replSetStepDown",60)

 File "/usr/local/lib64/python2.6/site-packages/pymongo/database.py", line 391, in command
    result = self["$cmd"].find_one(command, **extra_opts)

File "/usr/local/lib64/python2.6/site-packages/pymongo/collection.py", line 604, in find_one
    for result in self.find(spec_or_id, *args, **kwargs).limit(-1):

File "/usr/local/lib64/python2.6/site-packages/pymongo/cursor.py", line 904, in next
    if len(self.__data) or self._refresh():

File "/usr/local/lib64/python2.6/site-packages/pymongo/cursor.py", line 848, in _refresh
    self.__uuid_subtype))

 File "/usr/local/lib64/python2.6/site-packages/pymongo/cursor.py", line 782, in __send_message
    res = client._send_message_with_response(message, **kwargs)

File "/usr/local/lib64/python2.6/site-packages/pymongo/mongo_client.py", line 1051, in _send_message_with_response

raise AutoReconnect(str(e))
pymongo.errors.AutoReconnect: connection closed

是的:

from pymongo.errors import AutoReconnect

try:
    stepdown = conn.admin.command("replSetStepDown",100)
except AutoReconnect:
    pass

主節點降級時,有意立即關閉所有連接,因此該命令將引發異常。 只需忽略它,然后繼續即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM