使用 pymongo 连接到 Atlas MongoDb - ServerSelectionTimeoutError
Connecting to Atlas MongoDb using pymongo - ServerSelectionTimeoutError
我无法连接到我在 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
ServerSelectionTimeout 错误是客户端告诉您无法连接到服务器的方式。使用 MongoDB Atlas 时出现这些错误的主要原因是未能启用客户端 运行 所在节点的 access for the IP address。
要验证尝试使用 MongoDB shell mongo
使用相同的连接字符串进行连接。如果连接失败,那么您就知道这不是 Python 问题。您的客户端代码看起来不错,顺便说一句,所以我很确定它就是这样。
延迟评估与服务器的连接,因此在您发出实际请求之前我们不会尝试启动连接。在这种情况下, count_documents
调用。这就是为什么这是生成错误的调用。
@JoeDrumgoole 感谢您的回答。问题毕竟是代理,停用它后连接工作正常。很高兴知道延迟评估与服务器的连接。
我无法连接到我在 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
ServerSelectionTimeout 错误是客户端告诉您无法连接到服务器的方式。使用 MongoDB Atlas 时出现这些错误的主要原因是未能启用客户端 运行 所在节点的 access for the IP address。
要验证尝试使用 MongoDB shell mongo
使用相同的连接字符串进行连接。如果连接失败,那么您就知道这不是 Python 问题。您的客户端代码看起来不错,顺便说一句,所以我很确定它就是这样。
延迟评估与服务器的连接,因此在您发出实际请求之前我们不会尝试启动连接。在这种情况下, count_documents
调用。这就是为什么这是生成错误的调用。
@JoeDrumgoole 感谢您的回答。问题毕竟是代理,停用它后连接工作正常。很高兴知道延迟评估与服务器的连接。