Coverage for src/task/redis_client.py: 0%

25 statements  

« prev     ^ index     » next       coverage.py v7.9.0, created at 2025-11-03 17:19 +0000

1import time 

2from venv import logger 

3 

4import redis 

5 

6 

7class RedisClient: 

8 def __init__(self): 

9 self.host = "localhost" 

10 self.port = 6379 

11 self.decode_responses = True 

12 

13 def get_connection(self): 

14 return redis.Redis(host=self.host, port=self.port, decode_responses=self.decode_responses) 

15 

16 def exec_cmd(self, command, *args, **kwargs): 

17 max_retries = 3 

18 timeout = 5 

19 count = 0 

20 while True: 

21 try: 

22 return command(*args, **kwargs) 

23 except (redis.exceptions.ConnectionError, redis.exceptions.TimeoutError): 

24 count += 1 

25 if count > max_retries: 

26 raise 

27 logger.info("Retrying in {} seconds".format(timeout)) 

28 time.sleep(timeout) 

29 except Exception as ex: 

30 logger.exception("Exception occured {}".format(ex))