Django shell不尊重缓存配置

时间:2013-09-25 16:08:58

标签: python django caching django-cache django-caching

在我的settings.py中,我有:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
        'LOCATION': 'ws_cache_table',
        'TIMEOUT': '3000000',
        'OPTIONS': {
            'MAX_ENTRIES': 10000000
        }
    }
}

但如果我在python manage.py shell中执行此操作:

from django.core.cache import cache
print type(cache)

我得到了:

django.core.cache.backends.locmem.LocMemCache

为什么!??? 现在我无法清除缓存......

为证明我的配置是核心,我可以这样做:

from django.conf import settings
conf = settings.CACHES.get('default', None)

我得到了:

{'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
 'LOCATION': 'ws_cache_table',
 'OPTIONS': {'MAX_ENTRIES': 10000000},
 'TIMEOUT': '3000000'}

在定义CACHES之前,似乎调用了get_cache方法...

1 个答案:

答案 0 :(得分:0)

首先,您应该记住,local_settings.py会覆盖settings.py

然后你应该注意后端正在运行的缓存守护进程,因为有不同的缓存守护进程,根据你的运行情况,你需要相应的指定选项。

e.g。对于memcached,local_settings.py会读取:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': '127.0.0.1:11211'
        'CACHE_TIME': '3600',
    }
}

而对于locmem:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'
        'LOCATION': '127.0.0.1:11211'
        'TIMEOUT': 3600'
    }
}