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 the Conductor responseTimeoutSeconds used by generated TaskDefs for workspace tasks. The LakeFS merge field is used as a LakeFS SDK request timeout. The Conductor completion field is currently a completion-phase reserve inside responseTimeoutSeconds; 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 when deriving responseTimeoutSeconds. 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 Conductor response timeout 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 Conductor response timeout 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