Как дать key_prefix, значения переменных при кэшировании в Flask-Cache

Мы можем кэшировать любую функцию просмотра / отсутствия просмотра как

@cache.cached(timeout=50, key_prefix='all_comments')

Можем ли мы дать key_prefix некоторые значения переменных. Допустим, я кеширую функцию как

@cache.cached(timeout=50, key_prefix=value)
def get_all_comments(value):

Можем ли мы дать key_prefix в качестве тех же аргументов, что и в функции? Если не аргумент, то, по крайней мере, какой-то другой переменной можно использовать как следует.

3 ответа

В документах сказано

Новое в версии 0.3.4: Опционально может быть вызываемым, который не принимает аргументов, но возвращает строку, которая будет использоваться в качестве ключа cache_key.

Вы можете использовать make_cache_key , чтобы предоставить функцию для генерации ключа. Аргументы кэшированной функции (т. е. get_all_comments) передаются в качестве аргументов ключевого слова в функцию make_cache_key.

      def make_cache_key(**kwargs):
   return kwargs['value']

@cache.cached(timeout=50, make_cache_key=make_cache_key)
def get_all_comments(value):
   ....

Возможно, то, что вы ищете, этодекоратор, который принимает аргументы функции в качестве ключей кэша, давая вам возможность кэшировать результаты функции для различных значений.

      @cache.memoize(timeout=50)
def get_all_comments(value):

В этом примере я кэширую 50 секунд.

Другие вопросы по тегам