2016-05-26 2 views
1

В проекте Django, я устанавливаю мой бэкэнды следующим образом:Настройка несколько Джанго движков кэша

CACHES = { 
    'default': { 
    'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', 
    }, 
    'filemem': { 
    'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', 
    'LOCATION': '/var/tmp/django_cache', 
    } 
} 

Я использую filemem для кэширования результатов конкретной daemonized задачи, в то время как default буфера в игру для всего остального.

Я читал, что LocMemCache является кешем по умолчанию, используемым Django, когда ни один не указан. Если это верно, то технически, просто добавив ниже фрагмент кода на мой settings.py должна быть эквивалентна указанной выше фрагменте кода:

CACHES = { 
    'filemem': { 
    'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', 
    'LOCATION': '/var/tmp/django_cache', 
    } 
} 

Так вот мой вопрос. Эти два фрагмента эквивалентны? Или я должен указать default, если я собираюсь указать кеш без дефолта? Пожалуйста, порекомендуйте. Я новичок в кэшировании Django.

ответ

1

Чтобы использовать несколько кеш-серверов в Django, они оба должны присутствовать в словаре CACHES. Есть несколько способов сделать это, но ваш второй фрагмент не является одним из них.

Вы могли бы это сделать, но я никогда не видел, чтобы кто сделать это на практике:

from django.conf.global_settings import CACHES 

CACHES['filemem'] = { 
     'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', 
     'LOCATION': '/var/tmp/django_cache', 
     } 

Обычно люди явно объявлять все движки CACHE они будут использовать, например:

CACHES = { 
    'default': { 
    'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', 
    }, 
    'filemem': { 
    'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', 
    'LOCATION': '/var/tmp/django_cache', 
    } 
} 

Но в этом фрагменте вы находитесь , переписывая тайники кэша только с кешем файловой системы:

CACHES = { 
    'filemem': { 
    'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', 
    'LOCATION': '/var/tmp/django_cache', 
    } 
} 
+0

Хмм, это звучит логично, но когда я пытаюсь, я получаю сообщение об ошибке «имя CACHES не определено». –

+0

@ HassanBaig попробуйте сначала установить глобальную настройку CACHES – garnertb

Смежные вопросы