在这里和那里与不同的东西斗争之后,我终于能够让BottlePY在 Apache 上运行并运行一个由 MongoDB 驱动的站点。我习惯于运行 Django 应用程序,所以我将在我的问题中涉及到这一点。
问题
每次通过 BottlePY 加载页面时,都需要重新验证与位于 MongoHQ.com 上的 MongoDB 数据库的连接(这意味着它可能必须重新连接)。
我发现了什么
我在每个模型函数的顶部附加了一个db.keep_alive()
函数,以便在运行任何 mongodb 查询之前,它会尝试运行一个简单的查询。如果失败,它会捕获 OperationFailure 或 AutoReconnect 错误,然后调用该db.authenticate()
函数。在它重新验证后,我让它向日志数据库添加一个日志,以监控它需要多久重新验证一次。目前,它需要在每次页面加载时重新进行身份验证(这需要运行查询)。这是不对的。
与 Django 的区别
我在 django 中使用了同样的概念,发现数据库连接只需要在 10-15 分钟没有运行查询后进行身份验证。
我不明白为什么在 django 中创建一个 pymongo 连接与在瓶中创建一个不同,因为我使用的是相同的驱动程序、函数和方法。我也没有使用任何 ORMS 或类似的东西。
版本
- 瓶子:0.9.dev
- Django:1.2.1 最终版
- PyMongo:1.8
感谢您的帮助!
更新:一位朋友能够快速浏览并注意到以下可能有助于回答我的问题。
似乎每个请求都在启动一个新的 Python 进程,而不是 Django,其中一个进程保持运行很长时间。