variable template linebreaksbr examples bootstrap django django-cache django-caching

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