Cancel a Running Workflow
To stop a workflow before it has finished running, use the workflow cancel
command.
Terminal
moose workflow cancel <workflow-name>
Implementing Cancelation Callbacks
For workflows that are running and have clean up operations to perform, you can implement a termination callback.
This is especially useful for any long running tasks that have open connections or subscriptions to other services that need to be closed:
workflows/workflows.py
def run_task1(input: Foo) -> None:
connection.open()
def on_cancel() -> None:
# Clean up any resources
connection.close()
task1 = Task[Foo, None](
name="task1",
config=TaskConfig(run=run_task1, on_cancel=on_cancel)
)
myworkflow = Workflow(
name="myworkflow",
config=WorkflowConfig(starting_task=task1, retries=3)
)
Unlike the run()
function, the on_cancel
callback does not receive any input arguments.
workflows/workflows.ts
const task1 = new Task<Foo, void>({
name: "task1",
run: async (input: Foo) => {
connection.open();
},
onCancel: async () => {
// Clean up any resources
connection.close();
},
});
const myworkflow = new Workflow({
name: "myworkflow",
startingTask: task1,
retries: 3,
});
Unlike the run()
function, the onCancel
callback does not receive any input arguments.