在Django中缓存MongoDB连接

Ass*_*vie 6 django caching database-connection mongodb

我在Apache + mod_wsgi之上使用连接到PostgreSQL的标准(而不是NonRel)版本的Django.此设置还连接到MongoDB(某些数据在外部保存).现在我必须为每个Django请求创建一个新的MongoDB连接,并将它在整个调用堆栈中传递给需要访问MongoDB的所有函数.有没有办法缓存请求之间的连接?

编辑

冒着亵渎的风险,全球变量会在这种情况下起作用吗?

Evg*_*eny 5

有几种方法可以解释 pymongo 如何使用 mod_wsgi 工作(或失败),这里建议:http ://api.mongodb.org/python/current/faq.html?highlight=wsgi#does-pymongo-work-with-mod -wsgi

此外,您可以使用某种池化解决方案,如下所述:http : //www.mongodb.org/display/DOCS/Notes+on+Pooling+for+Mongo+Drivers

我知道已经有池化的一个项目是MongoEngine,它是一个非常简单的 ORM,在幕后使用 pymongo。您可能想与上面的 pymongo 常见问题解答一起研究它。

  • 根据我的经验,MongoEngine 非常稳定。它不需要你放弃任何东西,除非你愿意。 (5认同)
  • 您将 mongoengine.connect() 放在 settings.py 或其他东西的顶部,然后从那里通过 mongoengine 完成的所有调用都通过池。所以是的,它是一种全局变量。您不必使用其开源的 MongoEngine - 您可以只删除池/连接的内容。 (4认同)