Skip to content

Commit 9fb92bc

Browse files
committed
Support sentinel_kwargs
1 parent d946ce2 commit 9fb92bc

File tree

5 files changed

+88
-15
lines changed

5 files changed

+88
-15
lines changed

.github/workflows/tests.yml

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ jobs:
4141
REDIS_MASTER_HOST: redis
4242
REDIS_MASTER_SET: sentinel
4343
REDIS_SENTINEL_QUORUM: "1"
44+
REDIS_SENTINEL_PASSWORD: channels_redis
4445

4546
steps:
4647
- uses: actions/checkout@v2

channels_redis/core.py

+6-1
Original file line numberDiff line numberDiff line change
@@ -133,9 +133,14 @@ def create_pools(self):
133133
elif "master_name" in host:
134134
sentinels = host.pop("sentinels")
135135
master_name = host.pop("master_name")
136+
sentinel_kwargs = host.pop("sentinel_kwargs", None)
136137
pools.append(
137138
aioredis.sentinel.SentinelConnectionPool(
138-
master_name, aioredis.sentinel.Sentinel(sentinels), **host
139+
master_name,
140+
aioredis.sentinel.Sentinel(
141+
sentinels, sentinel_kwargs=sentinel_kwargs
142+
),
143+
**host
139144
)
140145
)
141146
else:

channels_redis/pubsub.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,7 @@ class RedisSingleShardConnection:
264264
def __init__(self, host, channel_layer):
265265
self.host = host.copy() if type(host) is dict else {"address": host}
266266
self.master_name = self.host.pop("master_name", None)
267+
self.sentinel_kwargs = self.host.pop("sentinel_kwargs", None)
267268
self.channel_layer = channel_layer
268269
self._subscribed_to = set()
269270
self._lock = None
@@ -421,7 +422,9 @@ async def _ensure_redis(self):
421422
pool = aioredis.sentinel.SentinelConnectionPool(
422423
self.master_name,
423424
aioredis.sentinel.Sentinel(
424-
self.host["sentinels"], socket_timeout=2
425+
self.host["sentinels"],
426+
socket_timeout=2,
427+
sentinel_kwargs=self.sentinel_kwargs,
425428
),
426429
)
427430
self._redis = aioredis.Redis(connection_pool=pool)

tests/test_pubsub_sentinel.py

+8-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,14 @@
99
from channels_redis.pubsub import RedisPubSubChannelLayer
1010

1111
SENTINEL_MASTER = "sentinel"
12-
TEST_HOSTS = [{"sentinels": [("localhost", 26379)], "master_name": SENTINEL_MASTER}]
12+
SENTINEL_KWARGS = {"password": "channels_redis"}
13+
TEST_HOSTS = [
14+
{
15+
"sentinels": [("localhost", 26379)],
16+
"master_name": SENTINEL_MASTER,
17+
"sentinel_kwargs": SENTINEL_KWARGS,
18+
}
19+
]
1320

1421

1522
@pytest.fixture()

tests/test_sentinel.py

+69-12
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,76 @@
99
from channels_redis.core import ChannelFull, RedisChannelLayer
1010

1111
SENTINEL_MASTER = "sentinel"
12-
TEST_HOSTS = [{"sentinels": [("localhost", 26379)], "master_name": SENTINEL_MASTER}]
13-
12+
SENTINEL_KWARGS = {"password": "channels_redis"}
13+
14+
TEST_HOSTS = [
15+
{
16+
"sentinels": [("localhost", 26379)],
17+
"master_name": SENTINEL_MASTER,
18+
"sentinel_kwargs": SENTINEL_KWARGS,
19+
}
20+
]
1421
MULTIPLE_TEST_HOSTS = [
15-
{"sentinels": [("localhost", 26379)], "master_name": SENTINEL_MASTER, "db": 0},
16-
{"sentinels": [("localhost", 26379)], "master_name": SENTINEL_MASTER, "db": 1},
17-
{"sentinels": [("localhost", 26379)], "master_name": SENTINEL_MASTER, "db": 2},
18-
{"sentinels": [("localhost", 26379)], "master_name": SENTINEL_MASTER, "db": 3},
19-
{"sentinels": [("localhost", 26379)], "master_name": SENTINEL_MASTER, "db": 4},
20-
{"sentinels": [("localhost", 26379)], "master_name": SENTINEL_MASTER, "db": 5},
21-
{"sentinels": [("localhost", 26379)], "master_name": SENTINEL_MASTER, "db": 6},
22-
{"sentinels": [("localhost", 26379)], "master_name": SENTINEL_MASTER, "db": 7},
23-
{"sentinels": [("localhost", 26379)], "master_name": SENTINEL_MASTER, "db": 8},
24-
{"sentinels": [("localhost", 26379)], "master_name": SENTINEL_MASTER, "db": 9},
22+
{
23+
"sentinels": [("localhost", 26379)],
24+
"master_name": SENTINEL_MASTER,
25+
"sentinel_kwargs": SENTINEL_KWARGS,
26+
"db": 0,
27+
},
28+
{
29+
"sentinels": [("localhost", 26379)],
30+
"master_name": SENTINEL_MASTER,
31+
"sentinel_kwargs": SENTINEL_KWARGS,
32+
"db": 1,
33+
},
34+
{
35+
"sentinels": [("localhost", 26379)],
36+
"master_name": SENTINEL_MASTER,
37+
"sentinel_kwargs": SENTINEL_KWARGS,
38+
"db": 2,
39+
},
40+
{
41+
"sentinels": [("localhost", 26379)],
42+
"master_name": SENTINEL_MASTER,
43+
"sentinel_kwargs": SENTINEL_KWARGS,
44+
"db": 3,
45+
},
46+
{
47+
"sentinels": [("localhost", 26379)],
48+
"master_name": SENTINEL_MASTER,
49+
"sentinel_kwargs": SENTINEL_KWARGS,
50+
"db": 4,
51+
},
52+
{
53+
"sentinels": [("localhost", 26379)],
54+
"master_name": SENTINEL_MASTER,
55+
"sentinel_kwargs": SENTINEL_KWARGS,
56+
"db": 5,
57+
},
58+
{
59+
"sentinels": [("localhost", 26379)],
60+
"master_name": SENTINEL_MASTER,
61+
"sentinel_kwargs": SENTINEL_KWARGS,
62+
"db": 6,
63+
},
64+
{
65+
"sentinels": [("localhost", 26379)],
66+
"master_name": SENTINEL_MASTER,
67+
"sentinel_kwargs": SENTINEL_KWARGS,
68+
"db": 7,
69+
},
70+
{
71+
"sentinels": [("localhost", 26379)],
72+
"master_name": SENTINEL_MASTER,
73+
"sentinel_kwargs": SENTINEL_KWARGS,
74+
"db": 8,
75+
},
76+
{
77+
"sentinels": [("localhost", 26379)],
78+
"master_name": SENTINEL_MASTER,
79+
"sentinel_kwargs": SENTINEL_KWARGS,
80+
"db": 9,
81+
},
2582
]
2683

2784

0 commit comments

Comments
 (0)