Подключение к Atlas MongoDb с использованием pymon go - ServerSelectionTimeoutError - PullRequest
0 голосов
/ 06 апреля 2020

У меня проблемы с подключением к БД, которую я настроил в Atlas MongoDB. Я уже прочитал несколько других вопросов, но ни один ответ не заставил мою связь работать. Я хочу указать, что я пытаюсь получить доступ к нему через прокси-сервер компании (если это имеет какое-либо отношение к этому). Мой код такой, и он не работает только в последней строке, где я пытаюсь подсчитать документы:

from pymongo import MongoClient


client = MongoClient(
    "mongodb+srv://name:pass@iliastrialcluster-1tl2y.azure.mongodb.net/test?retryWrites=true&w=majority&ssl=true&ssl_cert_reqs=CERT_NONE"
)
db = client.get_database('sample_airbnb')
print(db)
listings_and_reviews = db.listingAndReviews
print(listings_and_reviews)
listings_and_reviews.count_documents({})

Я получаю ошибку:

Traceback (most recent call last):
  File "C:~/mongo_connection1.py", line 11, in <module>
    listings_and_reviews.count_documents({})
  File "C:~\lib\site-packages\pymongo\collection.py", line 1721, in count_documents
    _cmd, self._read_preference_for(session), session)
  File "C:~\lib\site-packages\pymongo\mongo_client.py", line 1454, in _retryable_read
    read_pref, session, address=address)
  File "C:~\lib\site-packages\pymongo\mongo_client.py", line 1253, in _select_server
    server = topology.select_server(server_selector)
  File "C:~\lib\site-packages\pymongo\topology.py", line 235, in select_server
    address))
  File "C:~\lib\site-packages\pymongo\topology.py", line 193, in select_servers
    selector, server_timeout, address)
  File "C:~\lib\site-packages\pymongo\topology.py", line 209, in _select_servers_loop
    self._error_message(selector))
pymongo.errors.ServerSelectionTimeoutError: iliastrialcluster-shard-00-00-1tl2y.azure.mongodb.net:27017: timed out,iliastrialcluster-shard-00-02-1tl2y.azure.mongodb.net:27017: timed out,iliastrialcluster-shard-00-01-1tl2y.azure.mongodb.net:27017: timed out

Ответы [ 2 ]

0 голосов
/ 07 апреля 2020

@ JoeDrumgoole Спасибо за ваш ответ. В конце концов проблема была в прокси, после деактивации соединение работает нормально. Полезно знать, что соединение с сервером оценивается лениво.

0 голосов
/ 06 апреля 2020

ServerSelectionTimeout ошибка - это способ клиента сообщить вам, что вы не можете подключиться к серверу. Основной причиной этих ошибок при использовании MongoDB Atlas является сбой при включении доступа для IP-адреса узла, на котором работает клиент.

Для проверки попробуйте подключиться с помощью оболочки MongoDB mongo, используя ту же строку подключения. если вы получаете соединение не удалось, то вы знаете, что это не проблема Python. Ваш код клиента выглядит хорошо, кстати, так что я уверен, что это то, что он есть.

Соединение с сервером оценивается лениво, поэтому мы не пытаемся инициировать соединение, пока вы не сделаете фактический запрос. В этом случае count_documents вызов. Вот почему этот вызов вызывает ошибку.

...