Я создал модель для подсчета количества просмотров моей страницы:
class RequestCounter(models.Model):
count = models.IntegerField(default=0)
def __unicode__(self):
return str(self.count)
Для увеличения счетчика я использую:
def inc_counter():
counter = RequestCounter.objects.get_or_create(id =1)[0]
counter.count = F('count') + 1
counter.save()
Затем я показываю количествопросмотр страниц на моей странице, и он работает нормально.Но теперь мне нужно на некоторое время кэшировать свой счетчик.Я использую:
def get_view_count():
view_count = cache.get('v_count')
if view_count==None:
cache.set('v_count',RequestCounter.objects.filter(id = 1)[0],15)
view_count = cache.get('v_count')
return view_count
После этого я передаю результат get_view_count моему шаблону.
Поэтому я ожидаю, что мой счетчик будет стоять на месте в течение 15 секунд, а затем изменится нановое значение.Но, на самом деле, это не совсем так: когда я тестирую это из моей виртуальной Ubuntu, он скачет, например, с 55 до 56, через 15 секунд он меняется и теперь скачет с 87 до 88. Значения всегда чередуютсяи они не сильно отличаются друг от друга.Если я пытаюсь сделать это локально из окон, счетчик, похоже, будет в порядке, пока я не попытаюсь открыть больше, чем браузер.Понятия не имею, что с этим делать.Вы видите, в чем может быть проблема?
ps Я пытался использовать кэширование в шаблонах - и получил тот же результат.