Skip to content
Snippets Groups Projects
cache.py 970 B
Newer Older
  • Learn to ignore specific revisions
  • import logging
    
    from django_redis.client import default
    
    logger = logging.getLogger(__name__)
    
    
    class RedisClient(default.DefaultClient):
        def get(self, key, default=None, version=None, client=None):
            try:
                return super().get(key, default=None, version=None, client=None)
            except ValueError as e:
                if "unsupported pickle protocol" in str(e):
                    # pickle deserialization error
                    logger.warn("Error while deserializing pickle value from cache")
                    return default
                else:
                    raise
    
        def get_many(self, *args, **kwargs):
            try:
                return super().get_many(*args, **kwargs)
            except ValueError as e:
                if "unsupported pickle protocol" in str(e):
                    # pickle deserialization error
                    logger.warn("Error while deserializing pickle value from cache")
                    return {}
                else:
                    raise