30 lines
		
	
	
		
			978 B
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			978 B
		
	
	
	
		
			Python
		
	
	
	
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=default, version=version, client=client)
 | 
						|
        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
 |