为什么我的远程MongoDB连接需要在每个查询上进行身份验证?

Sha*_*tle 6 python mongodb pymongo bottle

在与各种各样的事情进行斗争之后,我终于能够在Apache上运行BottlePY并运行MongoDB驱动的站点.我习惯于运行Django应用程序,因此我将在我的问题中与此相关.

问题

每次通过BottlePY加载页面时,需要重新验证与MongoHQ.com上的MongoDB数据库的连接(意味着它可能需要重新连接).

我找到了什么

我将一个db.keep_alive()函数附加到每个模型函数的顶部,以便在运行任何mongodb查询之前,它会尝试运行一个简单的查询.如果失败,则捕获OperationFailure或AutoReconnect错误,然后调用该db.authenticate()函数.在重新验证之后,我将它添加到日志数据库中以监视重新验证所需的频率.目前,它需要在每个页面加载时重新进行身份验证(这需要运行查询).这不对.

与Django的区别

我在django中使用了相同的概念,并且发现db连接只需要在没有运行查询10-15分钟后进行身份验证.

我不明白为什么在django中创建一个pymongo连接会不同于在瓶子中创建一个pymongo连接,因为我使用相同的驱动程序,函数和方法.我也没有使用任何ORMS或类似的东西.

版本

  • 瓶子:0.9.dev
  • Django:1.2.1决赛
  • PyMongo:1.8

我很感激帮助!

更新:一位朋友能够快速查看并注意到以下内容可能有助于回答我的问题.

似乎每个请求都启动一个新的Python进程,而不是Django,其中一个进程长时间保持运行.

Sha*_*tle 1

这最终成为 Bottle 和 MongoHQ 之间的一件奇怪的事情。没有找到真正的解决方案,但我无法用其他框架重新创建它。任何其他想法表示赞赏。