mirror of
				https://github.com/django/django.git
				synced 2025-10-31 01:25:32 +00:00 
			
		
		
		
	Refs #29708 -- Stopped inheriting from PickleSerializer by RedisSerializer.
This commit is contained in:
		
				
					committed by
					
						 Mariusz Felisiak
						Mariusz Felisiak
					
				
			
			
				
	
			
			
			
						parent
						
							08d8bccbf1
						
					
				
				
					commit
					c6cb5a0277
				
			
							
								
								
									
										15
									
								
								django/core/cache/backends/redis.py
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								django/core/cache/backends/redis.py
									
									
									
									
										vendored
									
									
								
							| @@ -1,31 +1,30 @@ | |||||||
| """Redis cache backend.""" | """Redis cache backend.""" | ||||||
|  |  | ||||||
|  | import pickle | ||||||
| import random | import random | ||||||
| import re | import re | ||||||
|  |  | ||||||
| from django.core.cache.backends.base import DEFAULT_TIMEOUT, BaseCache | from django.core.cache.backends.base import DEFAULT_TIMEOUT, BaseCache | ||||||
| from django.core.serializers.base import PickleSerializer |  | ||||||
| from django.utils.functional import cached_property | from django.utils.functional import cached_property | ||||||
| from django.utils.module_loading import import_string | from django.utils.module_loading import import_string | ||||||
|  |  | ||||||
|  |  | ||||||
| class RedisSerializer(PickleSerializer): | class RedisSerializer: | ||||||
|     """ |     def __init__(self, protocol=None): | ||||||
|     Similar to PickSerializer, except integers are serialized as native Redis |         self.protocol = pickle.HIGHEST_PROTOCOL if protocol is None else protocol | ||||||
|     integers for better incr() and decr() atomicity. |  | ||||||
|     """ |  | ||||||
|     def dumps(self, obj): |     def dumps(self, obj): | ||||||
|         # Only skip pickling for integers, a int subclasses as bool should be |         # Only skip pickling for integers, a int subclasses as bool should be | ||||||
|         # pickled. |         # pickled. | ||||||
|         if type(obj) is int: |         if type(obj) is int: | ||||||
|             return obj |             return obj | ||||||
|         return super().dumps(obj) |         return pickle.dumps(obj, self.protocol) | ||||||
|  |  | ||||||
|     def loads(self, data): |     def loads(self, data): | ||||||
|         try: |         try: | ||||||
|             return int(data) |             return int(data) | ||||||
|         except ValueError: |         except ValueError: | ||||||
|             return super().loads(data) |             return pickle.loads(data) | ||||||
|  |  | ||||||
|  |  | ||||||
| class RedisCacheClient: | class RedisCacheClient: | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user