我有以下第三方装饰器:

def retry(exception_to_check, tries=4, delay=3, backoff=2, logger=None):


我想制作另一个装饰器@my_retry,它与@retry类似,但具有固定的参数。

我尝试使用functools.partial来做到这一点:

my_retry = partial(retry, RETRY_EXCEPTIONS, tries=5, delay=5, backoff=3, logger=logging)


但是当我使用新的装饰器时,出现以下异常:

TypeError: retry() got multiple values for keyword argument 'tries'


我究竟做错了什么?

最佳答案

您需要做的是在retry周围做一个包装,像这样

def my_retry(retry_exceptions, tries=5, delay=5, backoff=3, logger=logging):
    return retry(retry_exceptions, tries, delay, backoff, logger)


并使用@my_retry()

关于python - 修复装饰器参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23320405/

10-12 16:29