perago.PublishBudget#
- class perago.PublishBudget(*, observed_merge_p99_seconds, safety_margin_seconds, lakefs_merge_timeout_seconds, conductor_completion_timeout_seconds, worker_shutdown_grace_seconds, heartbeat_interval_seconds)[源代码]#
Operational time budget for workspace publication.
PublishBudgetderives a publication budget that can be compared with the task response timeout during TaskDef generation. The LakeFS merge field is used as a LakeFS SDK request timeout. The Conductor completion field is currently a completion-phase reserve; it is not wired to the Conductor SDKTaskRunnerresult-update HTTP request timeout. It is an operational time budget, not an exactly-once publication proof.- Parameters:
- observed_merge_p99_secondsint
Observed high-percentile LakeFS merge latency under expected workload.
- safety_margin_secondsint
Additional safety margin added to the observed merge latency.
- lakefs_merge_timeout_secondsint
Request timeout for the LakeFS merge operation. Must cover
observed_merge_p99_seconds + safety_margin_seconds.- conductor_completion_timeout_secondsint
Reserve for the Conductor completion phase. The SDK
TaskRunnerowns result update, and Perago does not currently apply this value as its internal HTTP request timeout.- worker_shutdown_grace_secondsint
Grace period reserved for worker shutdown after publication.
- heartbeat_interval_secondsint
Heartbeat interval included in the derived response timeout.
- Attributes:
response_timeout_secondsintDerived publication budget for workspace publication.
- Raises:
- TaskDefinitionError
If the LakeFS merge timeout is smaller than the observed latency plus safety margin.
- 参数:
Notes
Publish budgets are only valid for workspace tasks. Workspace-free tasks reject
TaskControls(publish_budget=...)during task definition validation.Examples
>>> budget = PublishBudget( ... observed_merge_p99_seconds=20, ... safety_margin_seconds=10, ... lakefs_merge_timeout_seconds=45, ... conductor_completion_timeout_seconds=15, ... worker_shutdown_grace_seconds=30, ... heartbeat_interval_seconds=10, ... ) >>> budget.response_timeout_seconds 100
Methods
validate_merge_timeout_budget()Validate that the LakeFS merge timeout covers the observed budget.
Attributes
response_timeout_secondsDerived publication budget for workspace publication.
observed_merge_p99_secondssafety_margin_secondslakefs_merge_timeout_secondsconductor_completion_timeout_secondsworker_shutdown_grace_secondsheartbeat_interval_seconds