Как дать 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 секунд.