Метод memoize
Метод memoize применяется к экземпляру класса Cache и
используется в качестве декоратора для функции. Он запоминает
результат вызова функции, основываясь на переданных аргументах,
и при повторном вызове с теми же аргументами возвращает
сохранённое значение, минуя выполнение тела функции.
Первым параметром передаётся время жизни кэша в секундах,
вторым - префикс ключа для хранения результата.
Синтаксис
@cache.memoize(timeout, key_prefix)
Пример
Давайте закэшируем результат функции, выполняющей сложные вычисления, на 50 секунд:
from flask import Flask
from flask_caching import Cache
app = Flask(__name__)
app.config['CACHE_TYPE'] = 'simple'
cache = Cache(app)
@cache.memoize(50)
def get_data(param):
return f"Result for {param}"
@app.route('/')
def index():
res = get_data('abcde')
return res
При первом обращении к адресу '/' функция выполнится
и результат сохранится в кэше. При повторном запросе
в течение 50 секунд результат будет взят из кэша.
Пример
Давайте используем собственный префикс ключа для кэширования:
from flask import Flask
from flask_caching import Cache
app = Flask(__name__)
app.config['CACHE_TYPE'] = 'simple'
cache = Cache(app)
@cache.memoize(100, key_prefix='my_prefix')
def calculate(num):
return num * 2
@app.route('/')
def index():
res = calculate(5)
return str(res)
Результат выполнения кода для адреса '/':
10