Параметр timeout
Параметр timeout применяется в методах кеша
set, add, set_many, а также
в декораторах cached и memoize. Он
задаёт время жизни значения в секундах. По истечении
этого времени значение считается устаревшим и удаляется
из кеша. Если параметр не указан, значение хранится
бессрочно (по умолчанию None).
Значением параметра может быть целое число секунд
или None. Отрицательное число также означает
бессрочное хранение.
Синтаксис
cache.set(key, value, timeout)
cache.add(key, value, timeout)
cache.set_many(mapping, timeout)
@cache.cached(timeout)
@cache.memoize(timeout)
Пример
Запишем значение в кеш с временем жизни 60 секунд:
from flask import Flask
from flask_caching import Cache
app = Flask(__name__)
app.config['CACHE_TYPE'] = 'simple'
cache = Cache(app)
with app.app_context():
cache.set('key1', 'abcde', timeout=60)
res = cache.get('key1')
print(res)
Результат выполнения кода:
"abcde"
Пример
Запишем значение с временем жизни 1 секунда и проверим его после истечения срока:
import time
from flask import Flask
from flask_caching import Cache
app = Flask(__name__)
app.config['CACHE_TYPE'] = 'simple'
cache = Cache(app)
with app.app_context():
cache.set('key1', 'abcde', timeout=1)
print(cache.get('key1'))
time.sleep(2)
print(cache.get('key1'))
Результат выполнения кода:
"abcde"
None
Пример
Применим параметр timeout в декораторе
cached для кеширования ответа на 30 секунд:
from flask import Flask
from flask_caching import Cache
app = Flask(__name__)
app.config['CACHE_TYPE'] = 'simple'
cache = Cache(app)
@app.route('/')
@cache.cached(timeout=30)
def index():
return 'hello'
Результат выполнения кода для адреса /:
hello
Пример
Применим параметр timeout в декораторе
memoize для кеширования результата функции
на 10 секунд:
from flask import Flask
from flask_caching import Cache
app = Flask(__name__)
app.config['CACHE_TYPE'] = 'simple'
cache = Cache(app)
@cache.memoize(timeout=10)
def get_user(user_id):
return 'user ' + str(user_id)
with app.app_context():
print(get_user(1))
print(get_user(1))
Результат выполнения кода:
"user 1"
"user 1"