如何(以及何时/何地)初始化Django缓存?

时间:2014-10-26 14:33:27

标签: python django caching django-1.7

我正在尝试使用Django LocMemCache存储一些简单的值,但我不确定如何在Django启动时初始化缓存。 Django 1.7附带Applications,允许在AppConfig.ready()中运行一些代码,这个地方非常适合初始化缓存,但根据Django 1.7文档:

  

“...虽然您可以按上述方式访问模型类,但请避免使用   在ready()实现中与数据库进行交互。“

所以,假设我想从我的模型中存储一些数据库查询:

x = MyModel.objects.count()
y = MyModel.(a really expensive query)

我应该如何以及何时启动缓存?这样做有推荐的“最佳实践”吗? 目前,我刚刚在我的应用程序中添加了以下cache.py,但我不确定是否 我的代码命中数据库一次(即第一个请求),然后使用之前的缓存值(以下请求)。

# cache.py

from django.core.cache import caches
from .models import MyModel


class Cache(object):

    def __init__(self):
        self.__count = MyModel.objects.count()
        self.cache = caches['cache-storage']

    @property
    def total_count(self):
        return self.cache.get('total_count', self.__count)

然后我以这种方式使用缓存的值:

# view.py

from .cache import Cache
cache = Cache()
...

   (some view)
   counter = cache.total_count

0 个答案:

没有答案