检查变量是否设置为 NO_VALUE
Check if variable is set to NO_VALUE
我正在使用 dogpile 在我的 python 程序中缓存。
在我的程序初始化期间,我清理缓存 SimpleCache.set_fault_injector(NO_VALUE)
@staticmethod
def set_fault_injector(injector):
SimpleCache.save("fault_injector", injector)
然后我检索对象:
@staticmethod
def get_fault_injector():
return SimpleCache.get("fault_injector")
injector = get_fault_injector()
在我的测试中,我正在检查 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 通常 returns dogpile.cache.api.NoValue
的特定实例,它是 NO_CACHE
.
这里的问题可能与您将缓存键显式设置为 NO_CACHE
有关,这不知何故最终给您留下了 NoValue
class.[= 的 2 个不同实例。 16=]
在我看来 NO_CACHE
并不是真的要用于取消设置密钥,我相信如果您实际使用 .delete("fault_injector")
或缓存包装器的任何删除方法,您的问题就会得到解决有空。
我正在使用 dogpile 在我的 python 程序中缓存。
在我的程序初始化期间,我清理缓存 SimpleCache.set_fault_injector(NO_VALUE)
@staticmethod
def set_fault_injector(injector):
SimpleCache.save("fault_injector", injector)
然后我检索对象:
@staticmethod
def get_fault_injector():
return SimpleCache.get("fault_injector")
injector = get_fault_injector()
在我的测试中,我正在检查 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 通常 returns dogpile.cache.api.NoValue
的特定实例,它是 NO_CACHE
.
这里的问题可能与您将缓存键显式设置为 NO_CACHE
有关,这不知何故最终给您留下了 NoValue
class.[= 的 2 个不同实例。 16=]
在我看来 NO_CACHE
并不是真的要用于取消设置密钥,我相信如果您实际使用 .delete("fault_injector")
或缓存包装器的任何删除方法,您的问题就会得到解决有空。