【发布时间】:2018-02-12 10:09:08
【问题描述】:
我使用 MongoDB 进行应用程序设置,在我的 Python 代码中,我使用 mongoengine 从 db 读取设置文档,mongoengine 是 pymongo 的高级包装器。 每次访问它的属性时,我都可以重新加载文档(假设 MongoDB 的 Setting 集合中有一个文档):
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 文档以找到一种不错的方法,并且我发现了 no_cache() 方法,该方法可用于强制 Setting 类返回非缓存查询集。有了这个,我离得更近了一点:
def get_setting():
return Setting.objects.no_cache()[0]
while True:
time.sleep(1)
print(get_setting().log_level)
有什么想法吗?
谢谢
【问题讨论】:
标签: python mongodb pymongo mongoengine