7

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

编辑

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

4

2 回答 2

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 常见问题解决方案一起研究它。

于 2012-06-14T13:26:28.703 回答
3

pymongo.connection.Connection()您可以在某处实例化 MongoDB 连接并将其导入,而不是每次需要时都调用它。或者您可以创建一个 Singleton 来执行此操作。像这样的东西settings.py

class ConnectionSingleton(object):
    """Represents a MongoDB connection"""
    conn=None
    def __new__(cls,*args,**kwds):
        if cls.conn is None:
            cls.conn=pymongo.connection.Connection()
        return cls.conn

这不能解决你的问题吗?

于 2012-06-14T14:01:14.363 回答