我使用dogpile在python程序中有缓存。
在程序初始化期间,我清理缓存SimpleCache.set_fault_injector(NO_VALUE)
@staticmethod
def set_fault_injector(injector):
SimpleCache.save("fault_injector", injector)
然后我用以下方法检索对象:
^{pr2}$在我的测试中,我检查injector
变量是否设置为NO_VALUE
,但是比较返回的是False
(应该是TRUE
)。如何检查injector
是否设置为NO_VALUE
?我清除缓存的方法是正确的?在
In [3]: injector
Out[3]: <dogpile.cache.api.NoValue at 0x7fdde0dfd750>
In [4]: NO_VALUE
Out[4]: <dogpile.cache.api.NoValue at 0x7fdde16dbed0>
In [5]: injector == NO_VALUE
Out[5]: False
In [6]: type(injector)
Out[6]: dogpile.cache.api.NoValue
In [7]: type(NO_VALUE)
Out[7]: dogpile.cache.api.NoValue
In [8]: injector is NO_VALUE
Out[8]: False
[9]: type(injector) == type(NO_VALUE)
Out[9]: True
但是,我对dogpile没有经验,但是从我从文档中了解到的,当一个值丢失时,dogpile通常返回一个
dogpile.cache.api.NoValue
的特定实例,即NO_CACHE
。在这里的问题可能与您显式地将一个缓存键设置为
NO_CACHE
有关,这最终会给您留下NoValue
类的两个不同实例。在在我看来,
NO_CACHE
并不是用来取消设置密钥的,我相信如果您实际使用.delete("fault_injector")
或缓存包装器可用的任何删除方法,您的问题就会得到解决。在相关问题 更多 >
编程相关推荐