session_budget¶
Signature¶
faultcore.session_budget(
*,
max_tx: str | None = None,
max_rx: str | None = None,
max_ops: int | None = None,
max_duration: str | None = None,
action: str = "drop",
budget_timeout: str | None = None,
error: str | None = None,
)
Purpose¶
Enforces session-level limits and triggers a terminal action once exhausted.
Defaults and validation¶
At least one limit is required (
max_tx,max_rx,max_ops, ormax_duration).max_opsmust be> 0when provided.actionmust be one of:drop,timeout,connection_error.For
action=timeout,budget_timeoutis required and must be> 0.
Example (budget exhaustion test)¶
import faultcore
@faultcore.session_budget(max_tx="1mb", action="timeout", budget_timeout="2s")
def stream_upload(bytes_out: int) -> int:
return bytes_out
def test_session_budget_limit() -> None:
consumed = stream_upload(1_200_000)
assert consumed > 1_000_000