Skip to content

Commit af6649b

Browse files
committed
Allow SSL support for Sentinel
1 parent 7a911f3 commit af6649b

File tree

2 files changed

+17
-11
lines changed

2 files changed

+17
-11
lines changed

arq/connections.py

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from dataclasses import dataclass
55
from datetime import datetime, timedelta
66
from operator import attrgetter
7-
from typing import TYPE_CHECKING, Any, Callable, List, Optional, Tuple, Union, cast
7+
from typing import TYPE_CHECKING, Any, Callable, Dict, List, Optional, Tuple, Union, cast
88
from urllib.parse import parse_qs, urlparse
99
from uuid import uuid4
1010

@@ -48,6 +48,7 @@ class RedisSettings:
4848

4949
sentinel: bool = False
5050
sentinel_master: str = 'mymaster'
51+
sentinel_kwargs: Optional[Dict[str, Any]] = None
5152

5253
retry_on_timeout: bool = False
5354
retry_on_error: Optional[List[Exception]] = None
@@ -242,7 +243,7 @@ def pool_factory(*args: Any, **kwargs: Any) -> ArqRedis:
242243
client = Sentinel( # type: ignore[misc]
243244
*args,
244245
sentinels=settings.host,
245-
ssl=settings.ssl,
246+
sentinel_kwargs=settings.sentinel_kwargs,
246247
**kwargs,
247248
)
248249
redis = client.master_for(settings.sentinel_master, redis_class=ArqRedis)
@@ -255,13 +256,6 @@ def pool_factory(*args: Any, **kwargs: Any) -> ArqRedis:
255256
port=settings.port,
256257
unix_socket_path=settings.unix_socket_path,
257258
socket_connect_timeout=settings.conn_timeout,
258-
ssl=settings.ssl,
259-
ssl_keyfile=settings.ssl_keyfile,
260-
ssl_certfile=settings.ssl_certfile,
261-
ssl_cert_reqs=settings.ssl_cert_reqs,
262-
ssl_ca_certs=settings.ssl_ca_certs,
263-
ssl_ca_data=settings.ssl_ca_data,
264-
ssl_check_hostname=settings.ssl_check_hostname,
265259
retry=settings.retry,
266260
retry_on_timeout=settings.retry_on_timeout,
267261
retry_on_error=settings.retry_on_error,
@@ -271,7 +265,17 @@ def pool_factory(*args: Any, **kwargs: Any) -> ArqRedis:
271265
while True:
272266
try:
273267
pool = pool_factory(
274-
db=settings.database, username=settings.username, password=settings.password, encoding='utf8'
268+
db=settings.database,
269+
username=settings.username,
270+
password=settings.password,
271+
encoding='utf8',
272+
ssl=settings.ssl,
273+
ssl_keyfile=settings.ssl_keyfile,
274+
ssl_certfile=settings.ssl_certfile,
275+
ssl_cert_reqs=settings.ssl_cert_reqs,
276+
ssl_ca_certs=settings.ssl_ca_certs,
277+
ssl_ca_data=settings.ssl_ca_data,
278+
ssl_check_hostname=settings.ssl_check_hostname,
275279
)
276280
pool.job_serializer = job_serializer
277281
pool.job_deserializer = job_deserializer

tests/test_utils.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def test_settings_changed():
2222
"RedisSettings(host='localhost', port=123, unix_socket_path=None, database=0, username=None, password=None, "
2323
"ssl=False, ssl_keyfile=None, ssl_certfile=None, ssl_cert_reqs='required', ssl_ca_certs=None, "
2424
'ssl_ca_data=None, ssl_check_hostname=False, conn_timeout=1, conn_retries=5, conn_retry_delay=1, '
25-
"max_connections=None, sentinel=False, sentinel_master='mymaster', "
25+
"max_connections=None, sentinel=False, sentinel_master='mymaster', sentinel_kwargs=None, "
2626
'retry_on_timeout=False, retry_on_error=None, retry=None)'
2727
) == str(settings)
2828

@@ -220,6 +220,7 @@ def test_settings_plain():
220220
'conn_retries': 5,
221221
'conn_retry_delay': 1,
222222
'sentinel': False,
223+
'sentinel_kwargs': None,
223224
'sentinel_master': 'mymaster',
224225
'retry_on_timeout': False,
225226
'retry_on_error': None,
@@ -249,6 +250,7 @@ def test_settings_from_socket_dsn():
249250
'conn_retries': 5,
250251
'conn_retry_delay': 1,
251252
'sentinel': False,
253+
'sentinel_kwargs': None,
252254
'sentinel_master': 'mymaster',
253255
'retry_on_timeout': False,
254256
'retry_on_error': None,

0 commit comments

Comments
 (0)