Sou um programador experiente, mas um novato em Python, Ubuntu e Linux. Peço desculpas, também, se essa questão fosse melhor em um fórum diferente.
Estou trabalhando em um projeto em Python usando PyCharm, com código executando em um ambiente Ubuntu no Vagrant. Tem que acessar um banco de dados MongoDb.
Quando o banco de dados é local, não tenho dificuldades. Eu também posso conectar a um banco de dados remoto. No entanto, o banco de dados ao qual eu mais quero me conectar é parte de um conjunto de réplicas, e esse parece ser o problema.
(Devo dizer que o banco de dados com o conjunto de réplicas tem um desempenho muito bom em seu papel real. Parece que eu sou o único com o problema.)
Nós configuramos alguns ssh
túneis usando estas sugestões:
Conectando-se a um conjunto de réplicas do Mongo via SSH
Nós configuramos hosts
e ifconfig
apropriadamente.
Meu supervisor agora pode se conectar com dificuldade mínima. Eu, no entanto, continuo recebendo esta mensagem:
pymongo.errors.ServerSelectionTimeoutError: No replica set members available for replica set name "abc"
As informações de conexão incluem todos os 3 servidores de conjunto de réplicas como parte da sequência host
, além do nome do conjunto de réplicas especificado e ReadPreference.PRIMARY
.
A faixa da pilha é assim:
File "/usr/local/src/dashboard/dashboard/dashboard/app/tasks/exports/__init__.py", line 95, in get_sections
sections = CourseSection.objects(**params)
File "/apps/dashboard-env/lib/python3.4/site-packages/mongoengine/queryset/manager.py", line 37, in __get__
queryset = queryset_class(owner, owner._get_collection())
File "/apps/dashboard-env/lib/python3.4/site-packages/mongoengine/document.py", line 198, in _get_collection
cls.ensure_indexes()
File "/apps/dashboard-env/lib/python3.4/site-packages/mongoengine/document.py", line 878, in ensure_indexes
collection.create_index(fields, background=background, **opts)
File "/apps/dashboard-env/lib/python3.4/site-packages/pymongo/collection.py", line 1753, in create_index
self.__create_index(keys, kwargs, session, **cmd_options)
File "/apps/dashboard-env/lib/python3.4/site-packages/pymongo/collection.py", line 1641, in __create_index
with self._socket_for_writes() as sock_info:
File "/apps/dashboard-env/lib/python3.4/site-packages/pymongo/collection.py", line 193, in _socket_for_writes
return self.__database.client._socket_for_writes()
File "/apps/dashboard-env/lib/python3.4/site-packages/pymongo/mongo_client.py", line 965, in _socket_for_writes
server = self._get_topology().select_server(writable_server_selector)
File "/apps/dashboard-env/lib/python3.4/site-packages/pymongo/topology.py", line 224, in select_server
address))
File "/apps/dashboard-env/lib/python3.4/site-packages/pymongo/topology.py", line 183, in select_servers
selector, server_timeout, address)
File "/apps/dashboard-env/lib/python3.4/site-packages/pymongo/topology.py", line 199, in _select_servers_loop
self._error_message(selector))
pymongo.errors.ServerSelectionTimeoutError: No replica set members available for replica set name "abc"
A mensagem específica No replica set members available for replica set name "abc"
parece ser relativamente incomum, pois não encontrei nenhum acesso ao Google por problemas com um conjunto específico de réplicas.
Qualquer sugestão seria muito apreciada.