Circuit Breaker¶
Circuit breaker plugin for resilient external service calls.
Classes¶
- class arshai.plugins.resilience.circuit_breaker.CircuitBreakerConfig(failure_threshold=5, recovery_timeout=60, expected_exception=<class 'Exception'>, name=None)[source]¶
Bases:
objectConfiguration for circuit breaker.
- __init__(failure_threshold=5, recovery_timeout=60, expected_exception=<class 'Exception'>, name=None)¶
- class arshai.plugins.resilience.circuit_breaker.CircuitBreakerError[source]¶
Bases:
ExceptionRaised when circuit is open.
- class arshai.plugins.resilience.circuit_breaker.CircuitBreakerPlugin(config=None, enable_metrics=True)[source]¶
Bases:
PluginCircuit breaker plugin for resilient external service calls.
This is an OPTIONAL plugin that adds resilience patterns without affecting existing Arshai functionality.
Example
# Optional usage - existing code continues to work cb = CircuitBreakerPlugin(config)
# Wrap async calls result = await cb.call_async(external_service.fetch_data, param1, param2)
# Wrap sync calls result = cb.call(external_service.fetch_data_sync, param1, param2)
# Decorator pattern (opt-in) @cb.protected async def my_external_call():
return await external_api.request()
- name = 'circuit_breaker'¶
- version = '1.0.0'¶
- __init__(config=None, enable_metrics=True)[source]¶
Initialize circuit breaker with optional config.
- Parameters:
config (
Optional[CircuitBreakerConfig]) – Optional configuration. Defaults to sensible values.enable_metrics (
bool) – Whether to enable performance metrics collection.
- property state: CircuitState¶
Get current circuit state.
- async call_async(func, *args, **kwargs)[source]¶
Execute async function with circuit breaker protection.
- protected(func)[source]¶
Decorator to protect functions with circuit breaker.
Works with both sync and async functions.
- Return type:
Example
@circuit_breaker.protected async def external_call():
return await api.request()