2013-09-25 2 views
1

В моем 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 

Почему! ??? Теперь я не могу очистить кэш ...

Для доказательства моей конфигурации Corect я могу сделать:

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'} 

Похоже get_cache метод вызывается до определения CACHES ...

+1

Возможно, вы обращаетесь к 'django.core.cache.cache' из кода, доступного в настройках? –

+0

, какая версия Django? –

+0

Вы уверены, что никакие другие локальные настройки не заменяют параметр 'CACHES'? Если вы вручную вызываете 'django.core.cache.get_cache ('default')', что вы получаете? –

ответ

0

Прежде всего, вы должны помнить, что ваш local_settings.py перезапишет settings.py ,

Затем вы должны следить за тем, какой демон кэша работает в качестве backend, поскольку существуют разные и в зависимости от того, что вы запускаете, вам нужен соответствующий указанный параметр.

например. для 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' 
    } 
} 
Смежные вопросы