Как поймать OperationFailure от MongoDB и PyMongo в Python

У меня была проблема, куда после того, как мое mongodb соединение с mongohq через pymongo идет неактивное некоторое время (никакие запросы), это будет тайм-аут. Это прекрасно, но соединение, база данных только создается, когда приложение Django запущено. Кажется, что это снова соединяется прекрасный, но это должно повторно пройти проверку подлинности затем. Когда соединение умерло и снова соединилось, и запрос пытается работать, это повышает OperationFailure и следующее значение исключения database error: unauthorized for db [shanereustle] lock type: -1 который говорит мне, что это снова соединяется, но не проходит проверку подлинности. Я импортировал OperationFailure от pymongo.errors и пытались использовать следующую попытку... кроме, но я, может казаться, не фиксирую ошибку и не прохожу проверку подлинности.

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

Но по некоторым причинам это не ловит. Если вместо этого кода, я просто выполню db.authenticate () перед запросом, то он повторно пройдет проверку подлинности очень хорошо и пойдет прекрасный, но я не хочу повторно проходить проверку подлинности на каждом запросе. Другие предложения на надлежащих способах сделать это очень приветствуется, и я ценю справку.

Спасибо!

6
задан Shane Reustle 9 August 2010 в 16:52
поделиться