Django. Не могу разобраться с кэшем?

Доброго времени суток!

Извиняюсь за глупый вопрос. Столкнулся с непонятным для меня поведением кэша. Нагуглить ничего не удалось.
Суть вот в чём.
Есть код, извликающий фотографии из базы:

cacheName = 'photosPage%s' %page
photos = cache.get(cacheName)
if photos == None:
    photos = (Thumbs.objects
                                .filter(pubDate__lte=datetime.now()) 
                                .all[:100])
    cache.set(cacheName, photos 60 * 10)


А дальше идёт код, который должен увеличивать число просмотров для фотографий:
for photo in photos:
    photo.views += 1
    photo.save()

Который, соответственно, и не работает.
Точнее, работает только в момент перестройки кэша, или если кэш отключить.

Прошу помочь и пнуть в нужном направлении)
  • Вопрос задан
  • 423 просмотра
Решения вопроса 1
@FireGM
У вас в photos сохранено то, что получено из кэша. Т.е. вы работаете не сданными из БД. Для повышения счетчика вам надо обращаться к БД.
Работа счетчика при перестройке обусловлено как раз тем, что в этот момент там хранится информация для работы с бд.
cache.get(cacheName) != Thumbs.objects.filter(pubDate__lte=datetime.now()).all[:100]
Лучше повышать счетчик в памяти и скидывать периодически в БД.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sim3x
@sim3x
Кешировать стоит после того как понятно, что стало узким местом
Тут пока непонятно зачем кешировать картинки текущего дня, если они буду меняться
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы