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 and provides runtime timeouts for the LakeFS merge and Conductor completion calls. 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

Request timeout for reporting the final task result to Conductor.

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