initialize logger in class to use in retry decorator

Viewed 349

Iam writing a database client and i want use a specific logger in the retry decorator:

import pandas as pd
from retry import retry
from set_up.SetUp import set_logging, set_up_environment, get_retry_parameters


class DBClient:
    def __init__(self):
        self.log = set_logging()
        self.connection = set_up_environment()
        self.tries,self.delay = get_retry_parameters()

    @retry(tries=tries, delay=delay, logger=log)
    def get_artist_table(self):

Is there a possibility to use the variables that i instantiate the class with in the retry decorator (it's an external library).

1 Answers

Using retry_call instead of retry. This should be sufficient for your requirement. https://github.com/invl/retry/blob/master/retry/api.py#L79

import pandas as pd
from set_up.SetUp import set_logging, set_up_environment, get_retry_parameters
from retry.api import retry_call

def retrydecorator(func):
    def inner(self, *fargs, **fkwargs):
        result = retry_call(func, fargs=(self,)+fargs, fkwargs=fkwargs, tries=self.tries, delay=self.delay, logger=self.log)
        return result
    return inner

class DBClient:
    def __init__(self):
        self.log = set_logging()
        self.connection = set_up_environment()
        self.tries,self.delay = get_retry_parameters()

    @retrydecorator
    def get_artist_table(self):
        pass
Related