2
私はビーカーキャッシュデコレータで装飾された機能を持っています。この関数は、メインアプリケーションにインポートされるモジュール内にあります。ビーカーキャッシュが'cache.type': 'memory'
で構成されてビーカーキャッシュを無効にする方法は?
def new_item():
cache.invalidate(my_cached_function, 'namespace')
ので:、私はキャッシュを無効にしようと、別の関数で
def index():
data = my_cached_function() # no args
:
from caching import cache, my_cached_function
今、1つの関数に私が装飾された機能を使用しました私も試みました:
def new_item():
cache.invalidate(my_cached_function, 'namespace', type='memory')
私はここで何が間違っていますか?
NOTES典型的なシナリオでは
、I)は、(ほとんどの時間をインデックスを呼び出します。 new_item()が呼び出されるたびにキャッシュをクリアして、new_item()関数で作成された新しい項目をindex()呼び出しで考慮します。
問題のアプリケーションは、ボトルフレームワークの上で動作するWebアプリケーションです。
理論的にはmy_cached_functionの前に呼び出されます。ユーザーが新しい項目を作成すると、キャッシュを無効にするはずのnew_item()関数が呼び出されます。次に、彼は装飾された機能が呼び出されるインデックスページにアクセスします。インデックスページには新しいアイテムを含むアイテムのリストが表示されるはずですが、そうではありません。 – hayavuk
ああ、別のメモ。キャッシュは無効にしても機能しません。私は無効化を強制するだけです。 – hayavuk
'new_item'でキャッシュを無効にするのではなく、' should_invalidate_item_cache'のようなキーをセッションで 'True'に設定し、' index'でその値がTrueであれば無効にしてみてください。 (これはちょうど推測であり、テストされていません) –