как заставить pymongo повторно подключиться, если соединение разорвано, и выполнить операцию?

#python #pymongo

#python #pymongo

Вопрос:

Я пытаюсь выяснить, как справиться pymongo.errors.ServerSelectionTimeoutError , если данные недоступны или каким-либо образом подключение к studio 3T (mongogui) приводит к отключению базы данных. итак, я хочу повторно подключиться к mongo.

 if __name__ == '__main__':
    client = pymongo.MongoClient(host='localhost', port=27017)
    db = client.info_collect
    collection = db['info']
    if collection.count_documents({'link': url}) < 1:
        collection.insert_one(add_dict)
  

Ответ №1:

вы должны просто обернуть свой код внутри блока try-except, где вы обрабатываете исключение ServerSelectionTimeoutError, повторяя попытку повторного подключения и снова выполняя тот же запрос внутри блока except. что-то вроде:

 if __name__ == '__main__':

try:
    client = pymongo.MongoClient(host='localhost', port=27017)
    db = client.info_collect
    collection = db['info']
    if collection.count_documents({'link': url}) < 1:
        collection.insert_one(add_dict)

except pymongo.errors.ServerSelectionTimeoutError as e:

    client = pymongo.MongoClient(host='localhost', port=27017)
    db = client.info_collect
    collection = db['info']
    if collection.count_documents({'link': url}) < 1:
        collection.insert_one(add_dict)