mirror of
https://github.com/django/django.git
synced 2024-11-25 07:59:34 +01:00
Fixed #33681 -- Made Redis client pass CACHES["OPTIONS"] to a connection pool.
Thanks Ben Picolo for the report.
This commit is contained in:
parent
d3677043fc
commit
d27e6b233f
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):
|
||||
|
Loading…
Reference in New Issue
Block a user