Retryer.NEVER_RETRY怎么用
时间: 2024-09-23 08:05:55 浏览: 36
`Retryer.NEVER_RETRY` 是一个常见的策略常量,在一些需要处理异常并选择是否重试的场景下,它表示永不重试的情况。这个值通常用于 `Retryer` 或者错误处理库中的 `retryPolicy` 配置,当设置为 `NEVER_RETRY`,意味着无论遇到何种异常,都不会自动尝试再次执行操作。
例如,在 Java 的 Spring Cloud Sleuth 或 Netflix Hystrix 等故障注入和熔断管理工具中,如果你只想记录失败而不希望实际去尝试重试,可以设置 retry policy 为:
```java
Retryer<MyTask> retryer = new Retryer<MyTask>()
.withStopStrategy(StopStrategies.stopAfterFailure(1))
.withRetryPolicy(Retryer.NEVER_RETRY);
```
这里 `.withRetryPolicy(Retryer.NEVER_RETRY)` 表明如果任务 `MyTask` 执行失败,不会有任何重试,直接抛出异常。
相关问题
解释代码 def run(self, cpn_input, retry: bool = True): self.task_version_id = cpn_input.task_version_id self.tracker = cpn_input.tracker self.checkpoint_manager = cpn_input.checkpoint_manager deserialize_models(cpn_input.models) # retry if ( retry and hasattr(self, '_retry') and callable(self._retry) and self.checkpoint_manager is not None and self.checkpoint_manager.latest_checkpoint is not None ): self._retry(cpn_input=cpn_input) # normal else: self._run(cpn_input=cpn_input) return ComponentOutput(self.save_data(), self._export(), self.save_cache())
这段代码是一个类的方法 `run` 的实现。以下是对代码的解释:
- `def run(self, cpn_input, retry: bool = True):` 定义了一个方法 `run`,它接受两个参数 `cpn_input` 和 `retry`(默认为 `True`)。
- `self.task_version_id = cpn_input.task_version_id` 将 `cpn_input` 的 `task_version_id` 赋值给当前实例的 `task_version_id` 属性。
- `self.tracker = cpn_input.tracker` 将 `cpn_input` 的 `tracker` 赋值给当前实例的 `tracker` 属性。
- `self.checkpoint_manager = cpn_input.checkpoint_manager` 将 `cpn_input` 的 `checkpoint_manager` 赋值给当前实例的 `checkpoint_manager` 属性。
- `deserialize_models(cpn_input.models)` 调用 `deserialize_models` 函数并传入 `cpn_input.models` 参数,用于反序列化模型。
接下来是一个条件语句,判断是否需要进行重试操作:
- `retry` 为真
- 当前实例具有 `_retry` 方法
- `_retry` 是可调用的(即为函数)
- `checkpoint_manager` 不为空且具有最新的检查点
如果满足以上条件,将调用 `_retry` 方法,传入 `cpn_input` 参数进行重试操作。否则,将调用 `_run` 方法,传入 `cpn_input` 参数进行正常操作。
最后,返回一个包含三个值的 `ComponentOutput` 对象,分别是通过 `save_data` 方法保存的数据、通过 `_export` 方法导出的结果,以及通过 `save_cache` 方法保存的缓存数据。
oracle的78.175.initial_retry_timeout
`initial_retry_timeout`是Oracle数据库中的一个参数,它表示在重试数据库连接时的初始等待时间。当数据库连接失败时,会根据该参数设定的时间间隔进行重试,如果连接仍然失败,则会按照指定的算法逐步增加重试时间间隔。
具体来说,`initial_retry_timeout`参数的单位是秒,它的默认值为5秒。如果需要调整该参数,可以使用以下语句:
```sql
ALTER SYSTEM SET initial_retry_timeout = <value>;
```
其中,`<value>`表示新的参数值,可以是整数或浮点数。需要注意的是,修改该参数可能会对数据库性能产生影响,应该谨慎调整。
阅读全文