prefect.utilities.engine
Functions
collect_task_run_inputs
collect_task_run_inputs_sync
capture_sigterm
resolve_inputs
Quote, PrefectFuture, or State types nested in parameters into
data.
Returns:
- A copy of the parameters with resolved data
UpstreamTaskError: If any of the upstream states are notCOMPLETED
propose_state
state will be augmented with
details and returned.
If the proposed state is rejected, a new state returned by the Prefect API will be
returned.
If the proposed state results in a WAIT instruction from the Prefect API, the
function will sleep and attempt to propose the state again.
If the proposed state results in an ABORT instruction from the Prefect API, an
error will be raised.
Args:
state: a new state for a flow runflow_run_id: an optional flow run id, used when proposing flow run states
- a State model representation of the flow run state
prefect.exceptions.Abort: if an ABORT instruction is received from the Prefect API
propose_state_sync
state will be augmented with
details and returned.
If the proposed state is rejected, a new state returned by the Prefect API will be
returned.
If the proposed state results in a WAIT instruction from the Prefect API, the
function will sleep and attempt to propose the state again.
If the proposed state results in an ABORT instruction from the Prefect API, an
error will be raised.
Args:
state: a new state for the flow runflow_run_id: an optional flow run id, used when proposing flow run states
- a State model representation of the flow run state
ValueError: if flow_run_id is not providedprefect.exceptions.Abort: if an ABORT instruction is received from the Prefect API
get_state_for_result
link_state_to_result must have been called first.
For objects that support __weakref__, the entry stored by
link_state_to_result carries a weak reference back to the original
object. We verify here that the entry’s weak reference still points
to the same object that registered the entry — not just to some
object that happens to share its id(). This prevents stale hits
caused by CPython recycling a freed memory address. Stale entries
are evicted on detection.
For objects that do not support __weakref__ (plain dict, list,
set, str, int, tuple, …), the entry has no weak reference
and we fall back to the legacy id()-only lookup. This preserves
today’s behavior for those types — including the latent stale-id
bug — and isolates the limitation to a single named code path.
link_state_to_flow_run_result
link_state_to_task_run_result
link_state_to_result
id of the components to map to the state. The cache is persisted to the
current flow run context since task relationships are limited to within a flow run.
This allows dependency tracking to occur when results are passed around.
Note: Because id is used, we cannot cache links between singleton objects.
We only cache the relationship between components 1-layer deep.
Example:
Given the result [1, [“a”,“b”], (“c”,)], the following elements will be
mapped to the state:
- [1, [“a”,“b”], (“c”,)]
- [“a”,“b”]
- (“c”,)
1 will not be mapped to the state because it is a singleton.
Other Notes:
We do not hash the result because:
- If changes are made to the object in the flow between task calls, we can still track that they are related.
- Hashing can be expensive.
- Not all objects are hashable.
- Hash-based keying would also conflate equal-but-distinct objects from unrelated tasks.
__prefect_state__, on the result because:
- Mutating user’s objects is dangerous.
- Unrelated equality comparisons can break unexpectedly.
- The field can be preserved on copy.
- We cannot set this attribute on Python built-ins.
should_log_prints
check_api_reachable
emit_task_run_state_change_event
resolve_to_final_result
PrefectFuture, or State types nested in parameters into
data. Designed to be use with visit_collection.
resolve_inputs_sync
Quote, PrefectFuture, or State types nested in parameters into
data.
Returns:
- A copy of the parameters with resolved data
UpstreamTaskError: If any of the upstream states are notCOMPLETED