Skip to content

Commit 3f99d97

Browse files
author
Andrei Neagu
committed
refactor with retry
1 parent 18a2075 commit 3f99d97

File tree

1 file changed

+12
-1
lines changed
  • packages/service-library/src/servicelib/redis

1 file changed

+12
-1
lines changed

packages/service-library/src/servicelib/redis/_client.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import redis.asyncio as aioredis
1010
import redis.exceptions
11+
import tenacity
1112
from common_library.async_tools import cancel_wait_task
1213
from redis.asyncio.lock import Lock
1314
from redis.asyncio.retry import Retry
@@ -62,6 +63,16 @@ def __post_init__(self) -> None:
6263
self._is_healthy = False
6364
self._health_check_task_started_event = asyncio.Event()
6465

66+
@tenacity.retry(
67+
wait=tenacity.wait_fixed(2),
68+
stop=tenacity.stop_after_delay(20),
69+
before_sleep=tenacity.before_sleep_log(_logger, logging.INFO),
70+
reraise=True,
71+
)
72+
async def wait_till_redis_is_responsive(self) -> None:
73+
if not await self.ping():
74+
raise tenacity.TryAgain
75+
6576
async def setup(self) -> None:
6677
@periodic(interval=self.health_check_interval)
6778
async def _periodic_check_health() -> None:
@@ -78,7 +89,7 @@ async def _periodic_check_health() -> None:
7889
# - ensure redis is working
7990
# - before shutting down an initialized Redis connection it must
8091
# make at least one call to the server, otherwise tests might hang
81-
await self.ping()
92+
await self.wait_till_redis_is_responsive()
8293

8394
_logger.info(
8495
"Connection to %s succeeded with %s",

0 commit comments

Comments
 (0)