我正在使用elasticsearch并需要建立一个持久连接,我在项目的任何地方都会重复使用。然而,经过大量挖掘后,我仍然不确定如何正确创建一个全局变量,我可以肯定只会实例化一次。我创建了以下文件:
es.py
from elasticsearch import Elasticsearch
es = Elasticsearch()
我在任务和视图等地方使用它,如下所示:
import es
es.es.search(***********)
但对我来说,似乎每次只调用es = Elasticsearch()
,导致重新创建连接。我的方法是否正确?
答案 0 :(得分:3)
无论模块和变量名称的选择如何(es.es
看起来都很尴尬),你的表现似乎还不错。
Elasticsearch()
都只会被调用一次。
我认为如果连接丢失,你会想要某种方式重新连接,但这是另一回事。
答案 1 :(得分:2)
它应该是正确的,因为import es
,es.py
执行并且所有变量都已初始化并添加到上下文中。因此,使用es.es.search
使用已初始化的变量es
。
答案 2 :(得分:1)
只需将此代码放入settings.py文件即可。 Django将运行一次,您的连接将被实例化一次。然后从以下设置导入它:
from django.conf import settings
settings.es