0
我正在使用MongoDB進行應用程序設置,並且在我的Python代碼中,我使用mongoengine讀取了設置文檔,這是用於pymongo的高級包裝器。 我能夠每次都重新加載該文件訪問它的屬性是這樣的(假設有在設置在MongoDB中收集的文件):如何在訪問屬性時自動重載pongongo或mongoengine中的MongoDB文檔?
import time
import mongoengine
class Setting(mongoengine.Document):
log_level = mongoengine.StringField(default='info')
setting = Setting.objects[0]
while True:
time.sleep(1)
setting.reload()
print(setting.log_level)
但是,我感興趣的是,使設置文檔的方法每次訪問log_level屬性時自動重新加載。有沒有一種乾淨的方式在mongoengine中做到這一點?我希望有這樣的,我的設置代碼始終與DB同步:
...
while True:
time.sleep(1)
print(setting.log_level)
我讀過mongoengine DOC更多了一下,找到一個很好的方式,我已經找到no_cache()方法,其可用於強制Setting類返回一個非緩存查詢集。有了這個,我有點接近了:
def get_setting():
return Setting.objects.no_cache()[0]
while True:
time.sleep(1)
print(get_setting().log_level)
任何想法?
謝謝
謝謝你的建議。但我試圖找到一種更乾淨的方式,因爲我必須在我的代碼中隨處使用這個設置文檔,並調用諸如get_reloaded_attr(setting,'log_level')的函數是冗長且間接的。 –