2011-10-15 2 views
2

Je reçois connection refused because too many open connections: 204 en essayant de faire MyApp.objects.get(foo=bar) dans un processus gevent. Dans models.py j'ai connect('my_db'). Dans Je fais mon script gevent.monkey.patch_all() Je l'ai vu cette questionmongoengine avec gevent, comment fermer/terminer les connexions?

pymongo + gevent: throw me a banana and just monkey_patch?

et cette question

https://github.com/hmarr/mongoengine/issues/272

mais je ne comprends pas comment accéder à la connexion pour appeler end_request. J'ai aussi essayé ce patch, mais il ne m'a pas aidé (à moins que je l'utilise mal)

https://gist.github.com/1184264

Répondre

0

Cela semble être la façon de le faire avec mongoengine (en supposant que vous avez une, connexion par défaut):

mongoengine.connection. get_connection ('par défaut'). start_request()

mongoengine.connection.get_connection ('par défaut'). end_request()

+0

Je n'ai pas utilisé mongoengine depuis que je pose cette question, mais je suis marquer comme correct car il semble à peu près juste. – cerberos

+0

Je viens de me heurter à ce problème l'autre jour, et j'ai trouvé ce fil sans réponse claire, alors j'ai pensé que j'ajouterais la solution qui a fonctionné pour moi. – cnelson

+0

Excellent, merci d'avoir posté votre réponse, c'est ce que nous faisons. Tout ce que je voulais dire par mon commentaire, c'est que je n'ai pas confirmé qu'il résout le problème, mais je le corrige de toute façon. – cerberos

0

MISE À JOUR: Ce problème a été résolu dans pymongo plus tôt cette année. Assurez-vous d'utiliser la dernière version de pymongo.

originale Réponse:

Apparemment, vous pouvez résoudre ce problème en utilisant une « classe proxy ... que les demandes des files d'attente aux travailleurs, ils consacrent une nouvelle connexions PyMongo à la demande, les jeter sur les erreurs de connexion, etc. et appeler des méthodes cibles », comme décrit ici:

http://groups.google.com/group/gevent/browse_thread/thread/a423d1a15d83f73c

(Voir le 31 août 2011 après par Antonin Amand et la réponse par Alexey Borzenkov)

PS Et, dans tous les cas, les gens MongoDB travaillent à résoudre le problème: https://jira.mongodb.org/browse/PYTHON-296