Acabo de configurar nuestro sitio de desarrollo Django para usar redis para un backend de caché y todo estaba funcionando bien. Bajé Redis para ver qué pasaría, y por supuesto Django 404 debido al comportamiento de back-end de la memoria caché. O se rechazó la conexión, o varios otros errores.¿Hay alguna forma de ignorar los errores de caché en Django?
¿Hay alguna manera de ordenar a Django que ignore los errores de caché y continúe el proceso de la manera normal? Parece raro que el almacenamiento en caché sea una optimización del rendimiento, pero puede derribar todo un sitio si falla.
Traté de escribir una envoltura alrededor del backend de este modo:
class CacheClass(redis_backend.CacheClass):
""" Wraps the desired Cache, and falls back to global_settings default on init failure """
def __init__(self, server, params):
try:
super(CacheClass, self).__init__(server, params)
except Exception:
from django.core import cache as _
_.cache = _.get_cache('locmem://')
Pero eso no funcionará, ya que estoy tratando de establecer el tipo de caché en la llamada que establece el tipo de caché. Todo es un gran desastre.
Entonces, ¿hay alguna manera fácil de tragar los errores de caché? ¿O para configurar el backend de caché predeterminado en caso de falla?
gracias por el enlace, pero que permite soportar múltiples backends. El código de manejo de errores todavía tendría que ir a alguna parte, y lo que busco es eliminarlo de la persona que llama. –
Pensé que su función de respaldo tenía potencial para cumplir su objetivo de "establecer el backend de caché predeterminado en caso de falla". ¿No? –
No realmente. Esa implementación solo 'retrocede' si no se puede recuperar un valor de la memoria caché. No, dónde maneja los errores. Mi especificación original estaba desactivada de todos modos, ya que la falla puede ocurrir después de init. Establecer un nuevo back-end en ese punto no parece razonable a menos que se maneje específicamente dentro del back-end. –