template - ¿Cómo usar 2 backends de caché diferentes en Django?
linebreaksbr django (4)
Además de la respuesta anterior de Romans ... También puede importar condicionalmente un caché por nombre y usar el predeterminado (o cualquier otro caché) si el pedido no existe.
from django.core.cache import cache as default_cache, get_cache
from django.core.cache.backends.base import InvalidCacheBackendError
try:
cache = get_cache(''foo-cache'')
except InvalidCacheBackendError:
cache = default_cache
cache.get(''foo'')
Necesito usar memcached y el caché basado en archivos. Configuré mi caché en la configuración:
CACHES = {
''default'': {
''BACKEND'': ''django.core.cache.backends.filebased.FileBasedCache'',
''LOCATION'': ''c:/foo/bar'',
},
''inmem'': {
''BACKEND'': ''django.core.cache.backends.dummy.DummyCache'',
}
}
el maniquí es temporal. Docs dice:
cache.set(''my_key'', ''hello, world!'', 30)
cache.get(''my_key'')
Está bien, pero ¿cómo puedo configurar y obtener el caché solo para el backend de caché ''inmem'' (en el futuro memcached)? La documentación no menciona cómo hacer eso.
Desafortunadamente, no puede cambiar qué alias de caché se usa para los métodos de bajo nivel cache.set()
y cache.get()
.
Estos métodos siempre usan el caché ''predeterminado'' según la línea 51 (en Django 1.3) de django.core.cache.__init__.py
:
DEFAULT_CACHE_ALIAS = ''default''
Por lo tanto, debe establecer su caché ''predeterminada'' en el caché que desea usar para el caché de bajo nivel y luego usar los otros alias para cosas como caché de sitio, caché de página y enrutamiento de caché db. `
Desde Django 1.9, get_cache
está en desuso. Haga lo siguiente para abordar las claves de ''inmem'' (además de la respuesta de Romanos):
from django.core.cache import caches
caches[''inmem''].get(key)
CACHES = {
''default'': {
''BACKEND'': ''django.core.cache.backends.filebased.FileBasedCache'',
''LOCATION'': ''c:/foo/bar'',
},
''inmem'': {
''BACKEND'': ''django.core.cache.backends.dummy.DummyCache'',
}
}
from django.core.cache import get_cache, cache
inmem_cache = get_cache(''inmem'')
default_cache = get_cache(''default'')
# default_cache == cache