I tried to implement the exponential backoff for my function using the reference code in Implementing a retry routine
However in my case I do not want my function to fail or throw an error after the set number of retries. I would want to catch the error and log it and continue with the rest of the code. Tried multiple things but did not work for me. If someone could assist that would be great. Below is the the sample code. Also please make comments if I'm not handling the other custom exception correctly.
import random, time
from functools import wraps 
class ThrottledException(Exception):
    pass
def retry(ExceptionToCheck, retries=5, delay=1, backoff=2, logger=None):
    """Retry calling the decorated function using an exponential backoff.
    """
    def deco_retry(f):
        @wraps(f)
        def f_retry(*args, **kwargs):
            _tries, _delay = retries, delay
            while _tries >= 1:
                try:
                    return f(*args, **kwargs)
                except ExceptionToCheck:
                    msg = f"{ExceptionToCheck}, Retrying in {_delay} seconds"
                    if logger:
                        #logger.exception(msg) # would print stack trace
                        logger.warning(msg)
                    else:
                        print(msg)
                    time.sleep(_delay)
                    _tries -= 1
                    _delay *= backoff
            return f(*args, **kwargs)
        return f_retry  # true decorator
    return deco_retry 
@retry(ThrottledException, retries=1, delay=1,backoff=2)            
def testfunction(param1, param2, param3):
    try:
        #response = requests.request("POST", url, headers=headers, data=payload)
        rnd = random.random()
        print(rnd)
        if rnd < 0.5:
            response = "Too Many Requests"
            raise ThrottledException
        else: 
            response = {"response":"created"}
        
        return response
    except ThrottledException as e:
        raise ThrottledException
    except Exception as e:
        print("Generic Exception")
res = testfunction('test',{'test1':'test1'}, {'test2':'test2'})
print(res)
 
     
    