Как сделать недействительным beaker_cache в Pylons? - PullRequest
2 голосов
/ 03 марта 2011

Необходимо аннулировать кэш, созданный декоратором beaker_cache для определенного действия контроллера:

from pylons.decorators.cache import beaker_cache

class SampleController(BaseController):

    @beaker_cache()
    def home(self):
        c.data = expensive_call()
        return render('/home.myt')

    def __clear_home_cache(self):
        pass

Могу ли я использовать region_invalidate() внутри функции __clear_home_cache?

1 Ответ

1 голос
/ 16 марта 2011

Один из способов выяснить, как сделать недействительными вещи, кэшированные декоратором beaker_cache, - посмотреть, как он работает и что он делает. Он определен в модуле pylons.decorators.cache, , вот соответствующий исходный файл на GitHub.

В основном вы ищете логику, которая выбирает пространство имен и ключ кэша для данного действия контроллера. Это делается функцией create_cache_key () в этом файле. И, кстати, эта функция имеет полезный комментарий:

Example:
    from pylons import cache
    from pylons.decorators.cache import create_cache_key
    namespace, key = create_cache_key(MyController.some_method)
    cache.get_cache(namespace).remove(key)
...