Pourquoi est-PyMongo 3 donner ServerSelectionTimeoutError?

Je suis en utilisant:

  • Python 3.4.2
  • PyMongo 3.0.2
  • mongolab de course mongod 2.6.9
  • uWSGI 2.0.10
  • CherryPy 3.7.0
  • nginx 1.6.2

uWSGI commencer params:

--socket 127.0.0.1:8081 --daemonize --enable-threads --threads 2 --processes 2

- Je configurer mon MongoClient UNE seule fois:

self.mongo_client = MongoClient('mongodb://user:[email protected]:port/mydb')
self.db = self.mongo_client['mydb']

J'essaie de l'enregistrer au format JSON dict pour MongoDB:

result = self.db.jobs.insert_one(job_dict)

Qu'il fonctionne via un test de l'unité qui exécute le même chemin d'accès du code de mongodb. Cependant, lorsque j'execute via CherryPy et uWSGI en utilisant un HTTP POST, j'obtiens ceci:

pymongo.errors.ServerSelectionTimeoutError: No servers found yet

Pourquoi suis-je en voyant ce comportement lorsqu'il est exécuté par CherryPy et uWSGI? Est-ce peut-être le nouveau modèle de thread dans PyMongo 3?

Mise à jour:

Si j'exécute sans uWSGI et nginx par l'aide de la CherryPy serveur intégré, le insert_one() œuvres.

Mise à jour 1/25 4:53pm EST:

Après l'ajout de certains de débogage dans PyMongo, il semble que topology._update_servers() sait que le type_serveur = 2 pour le serveur "myserver-a.mongolab.com'. Cependant server_description.known_servers() a la type_serveur = 0 pour le serveur "myserver.mongolab.com'

Ce qui conduit à la suite de la trace de pile:

result = self.db.jobs.insert_one(job_dict)
File "/usr/local/lib/python3.4/site-packages/pymongo/collection.py", line 466, in insert_one
with self._socket_for_writes() as sock_info:
File "/usr/local/lib/python3.4/contextlib.py", line 59, in __enter__
return next(self.gen)
File "/usr/local/lib/python3.4/site-packages/pymongo/mongo_client.py", line 663, in _get_socket
server = self._get_topology().select_server(selector)
File "/usr/local/lib/python3.4/site-packages/pymongo/topology.py", line 121, in select_server
address))
File "/usr/local/lib/python3.4/site-packages/pymongo/topology.py", line 97, in select_servers
self._error_message(selector))
pymongo.errors.ServerSelectionTimeoutError: No servers found yet
  • J'appuie trop sur ce type d'installation. Avez-vous jamais trouver une réponse?
  • Rien encore ... n'ai pas encore eu de retour pour le débogage.
  • Souhaitez-moi de commencer un bounty? Seriez-vous disponible pour répondre à des questions de suivi? Je suis complètement coincé sur moi-même.
  • Est-ce utile? blog.fejes.ca/?p=2496 je ne suis pas sûr de savoir comment elle s'appliquerait à uwsgi?
  • Bounty serait génial. J'ai essayé de poster dans la mongodb groupe google mais ma question ne l'ai jamais posté.
  • Ok, bounty a commencé.
  • Je vois votre commentaire a été posté sur le Groupe Google, @drfence, et PyMongo le responsable de Bernie Hackett est essayer de diagnostiquer là: groups.google.com/forum/#!topic/mongodb/utilisateur 7qX03P3_zKM
  • En général, si vous voyez ce qui ressemble à un PyMongo bug, le moyen le plus direct pour communiquer avec moi, Bernie, Anna, et de Luc, est de déposer un ticket dans le projet de PYTHON à jira.mongodb.org. Nous essayons de répondre immédiatement.
  • Merci Jesse, je suppose qu'on ne pouvait pas dire si c'était un problème d'utilisation ou un bug.
  • J'ai eu le même problème, mais le problème est la connexion à l'ORM niveau avec mongoengine

InformationsquelleAutor drfence | 2015-06-24