我一直遇到一个问题,在我通过 pymongo 与 mongohq 的 mongodb 连接空闲一段时间(没有查询)后,它将超时。这很好,但数据库连接仅在 Django 应用程序启动时创建。看起来它重新连接正常,但它需要重新验证。当连接断开并重新连接,并且查询尝试运行时,它会引发一个OperationFailure
和以下异常值database error: unauthorized for db [shanereustle] lock type: -1
,告诉我它正在重新连接,但未进行身份验证。我已经导入OperationFailure
并pymongo.errors
一直在尝试使用以下 try...except 但我似乎无法捕捉到错误并进行身份验证。
try:
db.mongohq.shanereustle.blog.find()
except OperationFailure:
db.authenticate() #this function reauthenticates the existing connection
但由于某种原因,这并没有抓住。如果我只是在查询之前运行 db.authenticate() 而不是这段代码,它会重新验证并正常运行,但我不想在每个查询上重新验证。非常欢迎其他有关正确方法的建议,我感谢您的帮助。
谢谢!