инициализировать регистратор в классе для использования в повторном оформлении - PullRequest
0 голосов
/ 16 октября 2019

Я пишу клиент базы данных, и я хочу использовать определенный регистратор в повторном декораторе:

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):

Есть ли возможность использовать переменные, с которыми я создаю экземпляр класса в декораторе повторов (этовнешняя библиотека).

1 Ответ

0 голосов
/ 16 октября 2019

Использование retry_call вместо retry. Этого должно быть достаточно для вашего требования. 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
...