Пропуски Junior Кеширование обновлено

Cache-aside в Django

Вопрос

Допишите cache-aside для страницы каталога.

from django.core.cache import cache

def catalog_page(category_id):
    key = f'catalog:{category_id}'
    data = cache.__(1)__(key)
    if data is __(2)__:
        data = build_page(category_id)
        cache.__(3)__(key, data, timeout=300)
    return data

Попробуйте сами

Заполните пропуски по номерам.

1
2
3
Показать ответ и разбор

Коротко

cache.get возвращает None при промахе (или значение по умолчанию вторым аргументом), cache.set сохраняет с TTL. Проверка is None, а не if not data, иначе пустая страница будет пересчитываться всегда.

Что в пропусках

1

get

2

None

3

set

Разбор

cache.get возвращает None при промахе (или значение по умолчанию вторым аргументом), cache.set сохраняет с TTL. Проверка is None, а не if not data, иначе пустая страница будет пересчитываться всегда.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.