Resilience
ResilientExecutor / AsyncResilientExecutor
API reference (all parameters are optional):
ResilientExecutor(
limiter: SyncLimiter | None = None,
retry_policy: RetryPolicy | None = None,
circuit_breaker: CircuitBreaker | None = None,
clock: Clock | None = None,
)
AsyncResilientExecutor(
limiter: AsyncLimiter | None = None,
retry_policy: RetryPolicy | None = None,
circuit_breaker: CircuitBreaker | None = None,
clock: Clock | None = None,
)
| Method |
Description |
run(key, func, *args, **kwargs) |
Execute with limiter, retry, and circuit breaker |
Async: use AsyncResilientExecutor; run is async.
RetryPolicy
RetryPolicy(
max_attempts: int = 3,
base_delay: float = 0.1,
max_delay: float = 5.0,
backoff: float = 2.0,
jitter: float = 0.0,
retry_on: Iterable[type[Exception]] = (Exception,),
)
| Method |
Description |
should_retry(exc, attempt) |
True if exception should be retried |
next_delay(attempt) |
Delay in seconds before next attempt |
CircuitBreaker
CircuitBreaker(
failure_threshold: int = 5,
recovery_timeout: float = 5.0,
half_open_success_threshold: int = 1,
clock: Clock | None = None,
)
| Method |
Description |
state |
Current state: closed, open, or half_open |
allow() |
True if execution allowed |
record_success() |
Record success; may close from half-open |
record_failure() |
Record failure; may open circuit |
reset() |
Reset to closed and clear counters |