Pergunta

Estou tendo um problema em que depois da minha conexão MongoDB com o Mongohq via Pymongo fica ocioso por um tempo (sem perguntas), ele vai tempo limite. Isso é bom, mas a conexão que o banco de dados é criado apenas quando o aplicativo Django é iniciado. Parece que está se reconectando bem, mas precisa reautenticar então. Quando a conexão morre e se reconectou, e uma consulta tenta correr, ele levanta um OperationFailure e o seguinte valor de exceção database error: unauthorized for db [shanereustle] lock type: -1 O que me diz que está se reconectando, mas não autenticando. Eu importei OperationFailure a partir de pymongo.errors E tenho tentado usar a seguinte tentativa ... exceto, mas não consigo pegar o erro e autenticar.

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

Mas, por algum motivo, isso não pega. Se, em vez desse código, eu simplesmente execute o db.authenticate () antes da consulta, ele reautenticará muito bem e vai bem, mas não quero reautenticar em todas as consultas. Outras sugestões sobre maneiras adequadas de fazer isso são muito bem -vindas e eu aprecio a ajuda.

Obrigado!

Foi útil?

Solução

Você pode tentar um find_one () em vez de find (). O último não itera o cursor automaticamente.

Eu apenas tentei isso com um banco de dados --auth e funcionou:

try:
  connection.test.foo.find_one()
except pymongo.errors.OperationFailure:
  print "caught"
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top