如何在Python中从MongoDB和PyMongo捕获操作失败

2024-09-27 09:30:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直有一个问题,在我通过pymongo连接到mongohq的mongodb空闲一段时间后(没有查询),它会超时。这很好,但是数据库的连接只在Django应用程序启动时创建。似乎它正在重新连接,但它需要重新验证。当连接已断开并重新连接,并且查询尝试运行时,它会引发一个OperationFailure和以下异常值database error: unauthorized for db [shanereustle] lock type: -1,告诉我它正在重新连接,但未进行身份验证。我已从pymongo.errors导入OperationFailure,并尝试使用以下尝试…但我似乎无法捕获错误并进行身份验证。

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

但由于某些原因,这不受欢迎。如果我只是在查询之前运行db.authenticate(),而不是这段代码,那么它将重新验证并正常运行,但我不想对每个查询都重新验证。其他关于正确方法的建议是非常受欢迎的,我很感谢你的帮助。

谢谢!


Tags: django身份验证数据库应用程序dbmongodberrordatabase

热门问题