Question

J'ai eu un problème où, après ma connexion MongoDB avec MongohQ via Pymongo, devient inactif pendant un certain temps (pas de questions), ce sera le temps mort. C'est bien, mais la connexion La base de données n'est créée que lorsque l'application Django est démarrée. Il semble que cela se reconnecte bien, mais il doit alors réactiver. Lorsque la connexion est morte et reconnectée, et qu'une requête essaie de courir, elle soulève un OperationFailure et la valeur d'exception suivante database error: unauthorized for db [shanereustle] lock type: -1 Ce qui me dit qu'il reconnecte, mais ne s'authentifie pas. J'ai importé OperationFailure de pymongo.errors et j'ai essayé d'utiliser l'essai suivant ... sauf mais je n'arrive pas à attraper l'erreur et à s'authentifier.

try:
    db.mongohq.shanereustle.blog.find()
except OperationFailure:
    db.authenticate() #this function reauthenticates the existing connection

Mais pour une raison quelconque, cela ne s'attrape pas. Si au lieu de ce code, j'exécute simplement DB.AuthentiCate () Avant la requête, il va bien réautoriser et va bien, mais je ne veux pas réauthentifier chaque requête. D'autres suggestions sur les bonnes façons de le faire sont les bienvenues et j'apprécie l'aide.

Merci!

Était-ce utile?

La solution

Pouvez-vous essayer un find_one () au lieu de find (). Ce dernier n'imagine pas automatiquement le curseur.

Je viens d'essayer avec une base de données - Auth, et cela a fonctionné:

try:
  connection.test.foo.find_one()
except pymongo.errors.OperationFailure:
  print "caught"
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top