1

私のpythonプログラムにキャッシュを入れるためにdogpileを使用しています。プログラムの初期化中に、キャッシュを消去します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
4

1 に答える 1

1

私はdogpileの経験がありませんが、ドキュメントから理解していることから、値が欠落している場合、dogpileは通常、 の特定のインスタンスを返しdogpile.cache.api.NoValueますNO_CACHE

ここでの問題はおそらく、キャッシュ キーを明示的に に設定したことに関連していると思われNO_CACHEますNoValue

キーの設定を解除するために実際に使用することを意図していないように見えNO_CACHEます。実際に使用した場合.delete("fault_injector")、またはキャッシュラッパーが利用できる削除方法を使用した場合、問題は解決されると思います。

于 2016-02-12T17:59:38.393 に答える