6

在这里和那里与不同的东西斗争之后,我终于能够让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,其中一个进程保持运行很长时间。

4

2 回答 2

1

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

于 2010-08-31T03:55:36.410 回答
0

您的 apache xxx.conf 是否包含以下内容:

WSGIDaemonProcess project user=mysite group=www-data processes=5 threads=1 WSGIProcessGroup project

我认为最重要的应该是threads=1

于 2010-08-16T19:19:05.380 回答