API Reference
CircuitProtectorPolicy
- class resilient_circuit.CircuitProtectorPolicy[source]
Bases:
ProtectionPolicy- DEFAULT_THRESHOLD = Fraction(1, 1)
- __init__(*, resource_key=None, storage=None, namespace=None, cooldown=datetime.timedelta(0), failure_limit=Fraction(1, 1), success_limit=Fraction(1, 1), should_handle=<function CircuitProtectorPolicy.<lambda>>, on_status_change=None)[source]
- Parameters:
- Return type:
None
- property execution_log: BinaryCircularBuffer
- property status: CircuitStatus
CircuitStatus
RetryWithBackoffPolicy
SafetyNet
- class resilient_circuit.SafetyNet[source]
Bases:
objectDecorates function with given policies.
SafetyNet will handle execution results in reverse, with last policy applied first.
Example
>>> from resilient_circuit import SafetyNet, RetryWithBackoffPolicy, CircuitProtectorPolicy >>> >>> @SafetyNet(policies=(RetryWithBackoffPolicy(), CircuitProtectorPolicy())) >>> def some_method() -> bool: >>> return True
ExponentialDelay
FixedDelay
Storage Classes
- class resilient_circuit.storage.CircuitBreakerStorage[source]
Bases:
ABCAbstract base class for circuit breaker storage backends.
- abstractmethod get_state(resource_key)[source]
Get the state for a given resource key.
- Returns:
state, failure_count, open_until, execution_log (optional) or None if no state found
- Return type:
Dictionary with keys
- Parameters:
resource_key (str)
- class resilient_circuit.storage.InMemoryStorage[source]
Bases:
CircuitBreakerStorageIn-memory storage implementation for circuit breaker state.
- get_state(resource_key)[source]
Get the state for a given resource key.
- Returns:
state, failure_count, open_until, execution_log (optional) or None if no state found
- Return type:
Dictionary with keys
- Parameters:
resource_key (str)
- class resilient_circuit.storage.PostgresStorage[source]
Bases:
CircuitBreakerStoragePostgreSQL storage implementation for circuit breaker state.
- get_state(resource_key)[source]
Get the state for a given resource key within this namespace.
NOTE: This query uses FOR UPDATE to lock the row to ensure this read-call-write cycle is atomic. Namespace isolation ensures parallel tests don’t conflict.
- set_state(resource_key, state, failure_count, open_until, execution_log=None)[source]
Set the state for a given resource key within this namespace.
- Parameters:
resource_key (str) – Unique circuit breaker identifier
state (str) – Circuit state (CLOSED, OPEN, HALF_OPEN)
failure_count (int) – Number of consecutive failures
open_until (float) – Timestamp when circuit can transition from OPEN
execution_log (list | None) – Optional list of boolean success/failure results for the circular buffer
- Return type:
None