У меня есть функция, которая украшена декоратором керамогранита. Функция находится в модуле, из которого он импортируется в основное приложение.Как сделать недействительным работу кэша Beaker?
from caching import cache, my_cached_function
Теперь в одной функции я декорированная функция:
def index():
data = my_cached_function() # no args
В другой функции, я пытаюсь аннулирую кэш:
def new_item():
cache.invalidate(my_cached_function, 'namespace')
Поскольку кэш Beaker сконфигурирован с 'cache.type': 'memory'
, Я также пробовал:
def new_item():
cache.invalidate(my_cached_function, 'namespace', type='memory')
Что я здесь делаю неправильно?
ПРИМЕЧАНИЯ
В типичном сценарии, я бы назвал индекс() большую часть времени. Мне нужно, чтобы кеш был очищен всякий раз, когда вызывается new_item(), так что вызов index() будет учитывать новые элементы, созданные функцией new_item().
Данное приложение представляет собой веб-приложение, работающее поверх рамки бутылки.
Он теоретически называется до my_cached_function. Когда пользователь создает новый элемент, вызывается функция new_item(), которая должна аннулировать кеш. Затем он посещает индексную страницу, где вызывается декорированная функция. На странице индекса должен отображаться список элементов _including_ новый, но это не так. – hayavuk
О, и еще одно примечание. Кэш работает даже без признания недействительным. Я просто хочу применить недействительность. – hayavuk
Вместо того, чтобы недействить кеш в 'new_item', попробуйте установить ключ' should_invalidate_item_cache' в 'True' в сеансе, а в' index' - недействительный, если это значение 'True'. (Это просто догадка, не проверенная.) –