You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<p><code>httpware</code> raises typed exceptions automatically — everything inherits <code>ClientError</code>, and HTTP responses with 4xx/5xx status raise status-keyed <code>StatusError</code> subclasses without you having to call <code>response.raise_for_status()</code>.</p>
895
-
<p>For the resilience-specific errors (<code>RetryBudgetExhaustedError</code>, <code>BulkheadFullError</code>) see the <ahref="../resilience/">Resilience reference</a>.</p>
895
+
<p>For the resilience-specific errors (<code>RetryBudgetExhaustedError</code>, <code>BulkheadFullError</code>, <code>CircuitOpenError</code>) see the <ahref="../resilience/">Resilience reference</a>.</p>
896
896
<p>The status-keyed exception tree is shared between <code>Client</code> and <code>AsyncClient</code>. Catching <code>NotFoundError</code> in sync code uses the same import as catching it in async code (<code>from httpware import NotFoundError</code>).</p>
<aid="__codelineno-0-17" name="__codelineno-0-17" href="#__codelineno-0-17"></a>├── RetryBudgetExhaustedError (a retry was needed but the budget refused)
915
915
<aid="__codelineno-0-18" name="__codelineno-0-18" href="#__codelineno-0-18"></a>├── BulkheadFullError (acquire_timeout elapsed before a slot opened)
<aid="__codelineno-0-20" name="__codelineno-0-20" href="#__codelineno-0-20"></a>└── MissingDecoderError (no registered decoder claims response_model=; fires before the HTTP call)
916
+
<aid="__codelineno-0-19" name="__codelineno-0-19" href="#__codelineno-0-19"></a>├── CircuitOpenError (circuit is OPEN or HALF_OPEN probe slot taken; request not forwarded)
<aid="__codelineno-0-21" name="__codelineno-0-21" href="#__codelineno-0-21"></a>└── MissingDecoderError (no registered decoder claims response_model=; fires before the HTTP call)
- <code>max_concurrent: int</code> — the configured cap
1032
1033
- <code>acquire_timeout: float | None</code> — the configured timeout</p>
1034
+
<p><code>CircuitOpenError</code> carries:
1035
+
- <code>retry_after: float | None</code> — seconds until the circuit will next admit a probe; <code>None</code> when a concurrent probe is already in flight (HALF_OPEN slot taken).</p>
1033
1036
<p>Use these for caller-side logging / alerting:</p>
0 commit comments