gpt4 book ai didi

Python 重试动态参数

转载 作者:行者123 更新时间:2023-12-05 03:51:38 24 4
gpt4 key购买 nike

retrying 中试过这个和 tenacity python 库无济于事。

重试通常与装饰器一起使用,例如下面的元代码所示:

class FooBar:

@retry(attempts=3)
def dosomething():
...

我希望重试参数在类上是可配置的

class FooBar:
def __init__(retries=0):
self.retries = retries

@retry(attempts=self.retries)
def dosomething():
...

显然这会失败,因为装饰器无法访问对象属性(即无法访问 self)。所以认为这会起作用:

def dosomething():
with retry(attempts=self.retries):
...

但是这两个库都不允许在 with block 中调用 retry

>  with retry():
E AttributeError: __enter__

用动态参数包装重试逻辑的首选方法是什么?

最佳答案

您不需要使用具有 @ 语法的 deorators - 它们也可以用作函数。

from tenacity import retry, stop_after_attempt

class CustomClass:
def __init__(self, retries):
decorator = retry(stop=stop_after_attempt(retries), reraise=True)
self.method_with_retry = decorator(self.method)

def method(self, x):
print('Trying...')
if x % 2:
raise ValueError
return x

CustomClass(3).method_with_retry(11)

关于Python 重试动态参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62763575/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com