检查变量是否设置为无值

2024-04-29 15:00:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用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

Tags: noin程序apifalsecachevaluetype
1条回答
网友
1楼 · 发布于 2024-04-29 15:00:35

但是,我对dogpile没有经验,但是从我从文档中了解到的,当一个值丢失时,dogpile通常返回一个dogpile.cache.api.NoValue的特定实例,即NO_CACHE。在

这里的问题可能与您显式地将一个缓存键设置为NO_CACHE有关,这最终会给您留下NoValue类的两个不同实例。在

在我看来,NO_CACHE并不是用来取消设置密钥的,我相信如果您实际使用.delete("fault_injector")或缓存包装器可用的任何删除方法,您的问题就会得到解决。在

相关问题 更多 >