A deployment is requiredFlow run cancellation requires that the flow run is associated with a deployment.
A monitoring process must be running to enforce the cancellation.Inline nested flow runs (those created without
run_deployment
), cannot be cancelled without cancelling the parent flow run.
To cancel a nested flow run independent of its parent flow run, we recommend deploying it separately
and starting it using the run_deployment
function.infrastructure_pid
or infrastructure identifier.
Generally, this is composed of two parts:
- Scope: identifying where the infrastructure is running.
- ID: a unique identifier for the infrastructure within the scope.
- Processes: The machine hostname and the PID.
- Docker Containers: The Docker API URL and container ID.
- Kubernetes Jobs: The Kubernetes cluster name and the job name.
- If the infrastructure for the flow run does not support cancellation, cancellation will not work.
- If the identifier scope does not match when attempting to cancel a flow run, the worker cannot cancel the flow run. Another worker may attempt cancellation.
- If the infrastructure associated with the run cannot be found or has already been killed, the worker marks the flow run as cancelled.
- If the
infrastructre_pid
is missing, the flow run is marked as cancelled but cancellation cannot be enforced. - If the worker runs into an unexpected error during cancellation, the flow run may or may not be cancelled depending on where the error occurred. The worker will try again to cancel the flow run. Another worker may attempt cancellation.
Cancel through the CLI
From the command line in your execution environment, you can cancel a flow run by using theprefect flow-run cancel
CLI command, passing the ID of the flow run.
Cancel through the UI
Navigate to the flow run’s detail page and clickCancel
in the upper right corner.
