2015-11-07 202 views
1

我正在使用elasticsearch,需要建立一個持久連接,並在我的項目中的任何地方重新使用。然而,經過多次挖掘,我仍然不確定如何正確地創建一個全局變量,我可以肯定它只會被實例化一次。我創建了以下文件:在django中設置全局變量

es.py

from elasticsearch import Elasticsearch 
es = Elasticsearch() 

我用它像任務和意見的地方如下:

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

但對我來說,似乎這隻會每次調用es = Elasticsearch(),導致連接被重新創建。我的方法是否正確?

回答

3

無論模塊和變量名稱的選擇如何(es.es看起來很尷尬),你的行爲似乎沒問題。

Elasticsearch()只會被調用一次,無論您在其餘代碼中導入模塊多少次。

我想你會想要某種方式重新連接,如果連接丟失,但這是另一回事。

1

只需將此代碼放入settings.py文件即可。 Django會運行一次,你的連接將被實例化一次。然後從設置導入這樣的:

from django.conf import settings 
settings.es 
2

它應該是,當您import eses.py執行和所有的變量都被初始化並添加到上下文正確。因此,使用es.es.search使用已經初始化的變量es