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.

PublishBudget derives 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 SDK TaskRunner result-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 TaskRunner owns 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_secondsint

Derived 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_seconds

Derived publication budget for workspace publication.

observed_merge_p99_seconds

safety_margin_seconds

lakefs_merge_timeout_seconds

conductor_completion_timeout_seconds

worker_shutdown_grace_seconds

heartbeat_interval_seconds