Skip to content

Commit 28d4db7

Browse files
authored
Allow SSL support for Sentinel
Currently there is no possibility to pass SSL parameters to connect to Sentinel instance and then to connect to the selected Node.
1 parent 7a911f3 commit 28d4db7

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
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

0 commit comments

Comments
 (0)