在django中设置全局变量

时间:2015-11-07 12:25:47

标签: python django

我正在使用elasticsearch并需要建立一个持久连接,我在项目的任何地方都会重复使用。然而,经过大量挖掘后,我仍然不确定如何正确创建一个全局变量,我可以肯定只会实例化一次。我创建了以下文件:

es.py

from elasticsearch import Elasticsearch
es = Elasticsearch()

我在任务和视图等地方使用它,如下所示:

import es
es.es.search(***********)

但对我来说,似乎每次只调用es = Elasticsearch(),导致重新创建连接。我的方法是否正确?

3 个答案:

答案 0 :(得分:3)

无论模块和变量名称的选择如何(es.es看起来都很尴尬),你的表现似乎还不错。

无论您在其余代码中导入模块多少次,

Elasticsearch()都只会被调用一次。

我认为如果连接丢失,你会想要某种方式重新连接,但这是另一回事。

答案 1 :(得分:2)

它应该是正确的,因为import eses.py 执行并且所有变量都已初始化并添加到上下文中。因此,使用es.es.search 使用已初始化的变量es

答案 2 :(得分:1)

只需将此代码放入settings.py文件即可。 Django将运行一次,您的连接将被实例化一次。然后从以下设置导入它:

from django.conf import settings
settings.es