Skip to content

FAQ

Why is @timeout async-only?

Python threads cannot be cancelled. A "timeout" on a sync method would return control while the work keeps running — a lie with a thread leak. Rejecting it at decoration time is honest; wrap blocking work in async first.

Does retry re-run other interceptors?

No: attempts after the first call the method directly. That is why @retryable belongs on top when combining — policies below it wrap the whole retry loop instead of being bypassed per attempt.

Is circuit state shared between instances?

Yes — keyed by module.Class.method, held by the singleton interceptor, guarded by a lock. Two instances of the same component share one circuit.

Can I disable everything at once?

resilience.enabled: false turns every policy into a pass-through.