pymongo.errors.OperationFailure: ошибка - PullRequest
5 голосов
/ 04 января 2011

Я запустил 3 mongod процесс каждый на разных port с разными dbpath.

./bin/mongod --replSet foo/tauquir:27018,tauquir:27019 --rest
./bin/mongod --port 27018 --dbpath /data/db1 --replSet foo/tauquir:27017 --rest
./bin/mongod --port 27019 --dbpath /data/db2 --replSet foo/tauquir:27017 --rest

Запустил соединение как:

CONN = Connection("tauquir:27017", slave_okay=True)
CONN.admin.command("replSetInitiate")
CONN = Connection(["tauquir:27018", "tauquir:27019"])

Traceback Я получаю:

     CONN.admin.command("replSetInitiate")
              File "/usr/local/lib/python2.6/dist-packages/pymongo-1.9-py2.6-linux-
        i686.egg/pymongo/database.py", line 293, in command msg, allowable_errors)
              File "/usr/local/lib/python2.6/dist-packages/pymongo-1.9-py2.6-linux- 
    i686.egg/pymongo/helpers.py", line 119, in _check_command_response raise 
OperationFailure(msg % response["errmsg"])
            pymongo.errors.OperationFailure: command SON([('replSetInitiate', 1)]) failed: 

all members and seeds must be reachable to initiate set

1 Ответ

1 голос
/ 04 января 2011

replSetInitiate - это однократная команда, так что вы, вероятно, не хотите, чтобы она была закодирована с вашим init-подключением, но после этой строки вам нужно создать экземпляр вашего python-клиента с информацией о соединении для всех 3-х серверов mongod.

В вашем примере вы заменяете переменную CONN подключением только к 27018 и 27019

db = Connection(["tauquir:27017", "tauquir:27018", "tauquir:27019"])
...