mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Fixed #33681 -- Made Redis client pass CACHES["OPTIONS"] to a connection pool.
Thanks Ben Picolo for the report.
This commit is contained in:
		
							
								
								
									
										4
									
								
								django/core/cache/backends/redis.py
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								django/core/cache/backends/redis.py
									
									
									
									
										vendored
									
									
								
							| @@ -32,9 +32,9 @@ class RedisCacheClient: | ||||
|         self, | ||||
|         servers, | ||||
|         serializer=None, | ||||
|         db=None, | ||||
|         pool_class=None, | ||||
|         parser_class=None, | ||||
|         **options, | ||||
|     ): | ||||
|         import redis | ||||
|  | ||||
| @@ -58,7 +58,7 @@ class RedisCacheClient: | ||||
|             parser_class = import_string(parser_class) | ||||
|         parser_class = parser_class or self._lib.connection.DefaultParser | ||||
|  | ||||
|         self._pool_options = {"parser_class": parser_class, "db": db} | ||||
|         self._pool_options = {"parser_class": parser_class, **options} | ||||
|  | ||||
|     def _get_connection_pool_index(self, write): | ||||
|         # Write to the first server. Read from other servers if there are more, | ||||
|   | ||||
| @@ -9,4 +9,5 @@ Django 4.0.5 fixes several bugs in 4.0.4. | ||||
| Bugfixes | ||||
| ======== | ||||
|  | ||||
| * ... | ||||
| * Fixed a bug in Django 4.0 where not all :setting:`OPTIONS <CACHES-OPTIONS>` | ||||
|   were passed to a Redis client (:ticket:`33681`). | ||||
|   | ||||
							
								
								
									
										17
									
								
								tests/cache/tests.py
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										17
									
								
								tests/cache/tests.py
									
									
									
									
										vendored
									
									
								
							| @@ -1817,6 +1817,23 @@ class RedisCacheTests(BaseCacheTests, TestCase): | ||||
|         self.assertIsInstance(cache._cache._serializer.dumps(True), bytes) | ||||
|         self.assertIsInstance(cache._cache._serializer.dumps("abc"), bytes) | ||||
|  | ||||
|     @override_settings( | ||||
|         CACHES=caches_setting_for_tests( | ||||
|             base=RedisCache_params, | ||||
|             exclude=redis_excluded_caches, | ||||
|             OPTIONS={ | ||||
|                 "db": 5, | ||||
|                 "socket_timeout": 0.1, | ||||
|                 "retry_on_timeout": True, | ||||
|             }, | ||||
|         ) | ||||
|     ) | ||||
|     def test_redis_pool_options(self): | ||||
|         pool = cache._cache._get_connection_pool(write=False) | ||||
|         self.assertEqual(pool.connection_kwargs["db"], 5) | ||||
|         self.assertEqual(pool.connection_kwargs["socket_timeout"], 0.1) | ||||
|         self.assertIs(pool.connection_kwargs["retry_on_timeout"], True) | ||||
|  | ||||
|  | ||||
| class FileBasedCachePathLibTests(FileBasedCacheTests): | ||||
|     def mkdtemp(self): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user