django运行时的交替设置

时间:2013-08-29 23:29:38

标签: python django

我需要在RAM中保留一些设置。我创建了文件“cache_values.py”

class CacheValue:
    pass

我想将它用作我需要的变量容器。

我正在服务器启动时将一些设置写入“CacheValue”:

from cms.models.pagemodel import Page
from modifier.cache_values import CacheValue

def cache_start_values():
   CacheValue.page_publish_dates={}

   pages=Page.objects.all()
   for page in pages:
       CacheValue.page_publish_dates[page.pk]=page.last_publish_date

   CacheValue.last_publish_date=max(CacheValue.page_publish_dates.values())

另外,当我保存一些模型时 - 我更改了这些设置

CacheValue.page_publish_dates[self.pk]=self.last_publish_date
CacheValue.last_publish_date=max(CacheValue.page_publish_dates.values())

但是当我想在我的模板中使用这个设置时,通过将它们与上下文处理器一起添加为变量 - 一些魔法就开始了。

from modifier.cache_values import CacheValue
def add_for_cache_info(request):
    context_extras = {}
    context_extras['page_publish_dates']=CacheValue.page_publish_dates
    context_extras['last_publish_date_all_pages']=CacheValue.last_publish_date
    if "current_page" in request.__dict__:
        context_extras['last_publish_date']=CacheValue.page_publish_dates[request.current_page.pk]   

    return context_extras 

在模板中

  {{ page_publish_dates }}
  {{ last_publish_date_all_pages }}

每次我引用页面时,我在渲染模板中看到的值在旧模式(模型保存前)和新模式(模型保存模式)之间交替显示。 0_0 0_0

如果我第二次保存模型(更改值) - 它将在最旧值和新值之间进行更改。

为什么呢?

1 个答案:

答案 0 :(得分:2)

正在运行多个Django进程,每个进程都有自己的CacheValue副本,其中一个具有相关值,但大多数没有。请改用Django's cache framework