在与不同的事情争斗之后,我终于能够在Apache上运行BottlePY并运行MongoDB驱动的站点。我习惯于运行Django应用程序,因此我将在我的问题中与此相关。
问题
每次通过BottlePY加载页面时,需要重新验证与MongoHQ.com上的MongoDB数据库的连接(意味着它可能需要重新连接)。
我找到了什么
我在每个模型函数的顶部附加了一个db.keep_alive()
函数,因此在运行任何mongodb查询之前,它会尝试运行一个简单的查询。如果失败,则捕获OperationFailure或AutoReconnect错误,然后调用db.authenticate()
函数。在重新验证之后,我将它添加到日志数据库中以监视重新验证所需的频率。目前,它需要在每个页面加载时重新进行身份验证(这需要运行查询)。这不对。
与Django的区别
我在django中使用了相同的概念,并且发现只有在没有运行查询10-15分钟后才需要对db连接进行身份验证。
我不明白为什么在django中创建一个pymongo连接会不同于在瓶子中创建一个pymongo连接,因为我使用相同的驱动程序,函数和方法。我没有使用任何ORMS或类似的东西。
版本
我很感激帮助!
更新:朋友能够快速查看并注意到以下内容可能有助于回答我的问题。
似乎每个请求都是 启动一个新的Python进程,如 反对Django,其中单一 过程仍然持续很长时间 一段时间。
答案 0 :(得分:1)
这最终成为了Bottle和MongoHQ之间的一个奇怪的事情。没有找到真正的解决方案,但我无法用其他框架重新创建它。任何其他想法都表示赞赏。
答案 1 :(得分:0)
您的apache xxx.conf是否包含以下内容:
WSGIDaemonProcess project user=mysite group=www-data processes=5 threads=1
WSGIProcessGroup project
我认为最重要的应该是threads=1