def retry_on_exception(max_retries: int = 10, delay_interval: int = 20): def decorator(func): @wraps(func) def with_retry(*args, **kwargs): nonlocal max_retries, delay_interval retried_times = 0 while max_retries > retried_times: try: return func(*args, **kwargs) except (Exception) as e: retried_times += 1 print("retry times: {}".format(str(retried_times))) time.sleep(delay_interval) continue return func(*args, **kwargs) return with_retry return decorator
时间: 2024-02-14 10:20:15 浏览: 26
这段代码是一个装饰器函数,用于对被装饰的函数进行异常重试。其中,max_retries参数表示最大重试次数,默认为10次;delay_interval参数表示重试间隔时间,默认为20秒。当被装饰的函数发生异常时,会进行重试,直到达到最大重试次数或者成功执行为止。在每次重试时,会打印当前重试次数,并暂停一段时间后再次执行被装饰的函数。最终返回被装饰的函数的执行结果。
相关问题
def retry_on_exception(max_retries: int = 5, delay_interval: int = 20): def decorator(func): @wraps(func) def with_retry(*args, **kwargs): nonlocal max_retries, delay_interval,传参进去的东西也算非局部变量吗
是的,传入函数的参数也可以被视为非局部变量。在这段代码中,使用 `nonlocal` 关键字声明了 `max_retries` 和 `delay_interval` 为 nonlocal 变量,因此可以在内部函数 `with_retry` 中修改它们的值。当你在传参时,传入的参数值会覆盖默认值,从而改变 nonlocal 变量的值,因此在函数执行过程中的任何时刻,`max_retries` 和 `delay_interval` 都可能被修改。
webhook_job_max_retry: 10
`webhook_job_max_retry: 10` 是 Harbor 的配置选项之一,用于设置 Webhook 任务的最大重试次数。当 Harbor 接收到 Webhook 请求时,如果任务执行失败,它将尝试重新执行该任务,最多重试指定次数。
通过将 `webhook_job_max_retry` 设置为 10,你可以配置 Harbor 在任务执行失败时最多重试 10 次。可以根据你的需求调整该值。
要应用这个配置更改,你需要编辑 Harbor 的配置文件,并将 `webhook_job_max_retry` 设置为你想要的值。保存并重新启动 Harbor 服务后,新的配置将生效。
请注意,设置过高的重试次数可能会导致任务长时间处于重试状态,并占用系统资源。因此,建议根据实际情况选择合适的重试次数。
希望对你有所帮助!如果还有其他问题,请随时提问。