使用 pymongo 启动 ReplicaSet 节点时出现问题
Problem initiating ReplicaSet node using pymongo
我正在尝试编写一个 python 脚本,其目标是在我的开发环境中启动一个 MongoDB 复制集节点(注意:我只有一个节点)而不必使用 mongo shell。所以脚本打算手动运行一次
我 运行 MongoDB 使用 docker 这是我的 docker-compose 文件的一部分:
mongodb:
image: "mongo:5.0-focal"
ports:
- "27017:27017"
volumes:
- mongodb:/data/db
entrypoint:
[
"/usr/bin/mongod",
"--bind_ip_all",
"--replSet",
"rs0"
]
我运行以下python代码在属于同一网络的另一个docker容器中,以便它在主机名上可见mongodb。我的pymongo版本是4.0.1
import os
from pymongo import MongoClient
try:
client = MongoClient('mongodb',27017,serverSelectionTimeoutMS=5000)
config = { '_id': 'rs0', 'members': [{'_id': 0, 'host': 'mongodb:27017'}]}
print("REPLICA SET config:")
print(config)
out = client.admin.command("replSetInitiate", config)
print(out)
except Exception as e:
print("Error!")
print(e)
pass
运行正在运行脚本我遇到了这个错误:
No servers match selector "Primary()", Timeout: 5.0s, Topology Description: <TopologyDescription id: 61c0dffc7f72958bdd10e65f, topology_type: Unknown, servers: [<ServerDescription ('mongodb', 27017) server_type: RSGhost, rtt: 0.004416499999933876>]>
好的,没有服务器匹配Primary选择器,但是如果我不先启动replicaSet,我怎么会有Primary呢?不是 pymongo 和 MongoDB 方面的专家,但我在这里遗漏了什么吗?
我遇到了类似的问题并遇到了 https://jira.mongodb.org/browse/PYTHON-3027。将 'directConnection=True' 作为参数传递给 MongoClient 似乎有所帮助。虽然,我不确定这是如何工作的。
我正在尝试编写一个 python 脚本,其目标是在我的开发环境中启动一个 MongoDB 复制集节点(注意:我只有一个节点)而不必使用 mongo shell。所以脚本打算手动运行一次
我 运行 MongoDB 使用 docker 这是我的 docker-compose 文件的一部分:
mongodb:
image: "mongo:5.0-focal"
ports:
- "27017:27017"
volumes:
- mongodb:/data/db
entrypoint:
[
"/usr/bin/mongod",
"--bind_ip_all",
"--replSet",
"rs0"
]
我运行以下python代码在属于同一网络的另一个docker容器中,以便它在主机名上可见mongodb。我的pymongo版本是4.0.1
import os
from pymongo import MongoClient
try:
client = MongoClient('mongodb',27017,serverSelectionTimeoutMS=5000)
config = { '_id': 'rs0', 'members': [{'_id': 0, 'host': 'mongodb:27017'}]}
print("REPLICA SET config:")
print(config)
out = client.admin.command("replSetInitiate", config)
print(out)
except Exception as e:
print("Error!")
print(e)
pass
运行正在运行脚本我遇到了这个错误:
No servers match selector "Primary()", Timeout: 5.0s, Topology Description: <TopologyDescription id: 61c0dffc7f72958bdd10e65f, topology_type: Unknown, servers: [<ServerDescription ('mongodb', 27017) server_type: RSGhost, rtt: 0.004416499999933876>]>
好的,没有服务器匹配Primary选择器,但是如果我不先启动replicaSet,我怎么会有Primary呢?不是 pymongo 和 MongoDB 方面的专家,但我在这里遗漏了什么吗?
我遇到了类似的问题并遇到了 https://jira.mongodb.org/browse/PYTHON-3027。将 'directConnection=True' 作为参数传递给 MongoClient 似乎有所帮助。虽然,我不确定这是如何工作的。