繁体   English   中英

PyMongo 无法从 Azure 容器实例连接到 MongoDB Atlas

[英]PyMongo Cant connect to MongoDB Atlas from Azure Container Instance

我有一个在 Azure 容器实例上运行的简单 python 脚本。 我正在尝试使用 Pymongo 在云上插入 MongoDB Atlas,但我不断收到此错误:

pymongo.errors.ServerSelectionTimeoutError: test-shard-00-01.tvyda.mongodb.net:27017: timed out,test-shard-00-00.tvyda.mongodb.net:27017: timed out,test-shard-00-02.tvyda.mongodb.net:27017: timed out, Timeout: 5.0s, Topology Description: <TopologyDescription id: 616838412c3f7b25d8dfc654, topology_type: ReplicaSetNoPrimary, servers: [<ServerDescription ('test-shard-00-00.tvyda.mongodb.net', 27017) server_type: Unknown, rtt: None, error=NetworkTimeout('test-shard-00-00.tvyda.mongodb.net:27017: timed out',)>, <ServerDescription ('test-shard-00-01.tvyda.mongodb.net', 27017) server_type: Unknown, rtt: None, error=NetworkTimeout('test-shard-00-01.tvyda.mongodb.net:27017: timed out',)>, <ServerDescription ('test-shard-00-02.tvyda.mongodb.net', 27017) server_type: Unknown, rtt: None, error=NetworkTimeout('test-shard-00-02.tvyda.mongodb.net:27017: timed out',)>]>

这是我的代码:

conn_str = f"mongodb+srv://{self.mongo_user}:{self.mongo_password}@{self.mongo_cluster}/{self.mongo_db}?retryWrites=true&w=majority"
db_name = self.mongo_db
collection_name = self.mongo_collection
client = pymongo.MongoClient(
conn_str, serverSelectionTimeoutMS=5000, tls=True, tlsAllowInvalidCertificates=True)
db = client[db_name]
collection = db[collection_name]

result = collection.insert_one(some_dict)

我已将容器实例的 IP 添加到 MongoDB 云中的网络访问列表中。

它在我在本地机器上运行的 Docker 桌面上运行良好。

我无法解决这个问题。 任何帮助表示赞赏。 谢谢。

IP 地址(公共)在您的容器实例的概览选项卡上列出,只是入站 IP 地址。

要获取容器用来调用 MongoDB - Atlas 的出站 IP 地址,您可以连接到容器(门户或 az cli)并执行:

curl ifconfig.me

如果你运行 alpine 容器(像我一样),你必须先安装 curl:

apk update
apk add curl

在MongoBD Atlas控制台中将output IP地址列入白名单,您对go很好。

请注意,当您重新启动容器时,出站 IP 地址可以(并且可能会)更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM