Pourquoi ma connexion MongoDB à distance requièrent une authentification à chaque requête?

StackOverflow https://stackoverflow.com/questions/3456267

Question

Après avoir combattu avec différentes choses ici et là, j'ai finalement en mesure d'obtenir BottlePY en cours d'exécution sur Apache et exécutez un site alimenté MongoDB. Je suis habitué à courir des applications Django, donc je vais relatif à cet un peu à ma question.

Le problème

Chaque fois qu'une page est chargée via BottlePY, la connexion à la base de données MongoDB situé sur MongoHQ.com doit être ré-authentifié (ce qui signifie qu'il a probablement de reprendre contact).

Ce que je trouve

I attaché une fonction de db.keep_alive() au début de chaque fonction de modèle, de sorte que, avant toute requête mongodb est exécuté, il essaye d'exécuter une requête simple. Si elle échoue, elle attrape le OperationFailure ou les erreurs autoreconnect puis appelle la fonction db.authenticate(). Après avoir authentifie à nouveau, je l'ai ajouter un journal à un db journaux pour surveiller la fréquence dont il a besoin reauthenticate. À l'heure actuelle, il doit réauthentifier sur chaque chargement de page (qui nécessite l'exécution d'une requête). Ce ne va pas.

Différence par rapport à Django

J'utilise ce même concept dans django, et nous avons trouvé que la connexion db ne doit être authentifié après 10-15 minutes de aucune requête en cours d'exécution.

Je ne comprends pas pourquoi la création d'une connexion pymongo dans django serait différent de créer une en bouteille, car je suis avec le même pilote, les fonctions et méthodes. Je n'utilise des ORMES ou quelque chose comme ça non plus.

Versions

  • Bouteille: 0.9.dev
  • Django: 1.2.1 finale
  • PyMongo: 1.8

Je vous remercie de l'aide!

Mise à jour: Un ami a pu jeter un oeil rapide et remarqué les éléments suivants qui aident mai à répondre à ma question.

  

Il semble que chaque demande est   le lancement d'un nouveau processus Python, comme   opposition à Django, dans lequel un seul   processus reste en cours d'exécution pendant une longue   période de temps.

Était-ce utile?

La solution

vient de se terminer pour être une chose bizarre entre la bouteille et MongoHQ. Aucune solution réelle n'a été trouvée, mais je ne pouvais pas le recréer avec d'autres cadres. D'autres idées sont appréciées.

Autres conseils

que votre apache xxx.conf contient quelque chose comme:

WSGIDaemonProcess project user=mysite group=www-data processes=5 threads=1 WSGIProcessGroup project

Je pense que le plus important devrait être threads=1

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top