Task timeout
Timeout allows you to set a maximum duration for a task run.
What is timeout
If the task run exceeds the specified duration, Kestra will automatically stop the task run and mark it as failed. This is useful for tasks that may hang and run indefinitely.
Timeout is often used as a cost control mechanism for cloud-based workflows. Imagine a Snowflake query or an AWS Batch job that runs for hours leading to unexpected costs. By setting a timeout, you can ensure that the task run will not exceed a certain duration.
Format
Similar to durations in retries, timeouts use the ISO 8601 Durations format. Below are some examples:
name | description |
---|---|
PT0.250S | 250 milliseconds delay |
PT2S | 2 seconds delay |
PT1M | 1 minute delay |
PT3.5H | 3 hours and a half delay |
Example
In this example, the costly_query
task will sleep for 10 seconds, but the timeout is set to 5 seconds, leading to a failed task run.
id: timeout
namespace: company.team
description: This flow will always fail because of a timeout.
tasks:
- id: costly_query
type: io.kestra.plugin.scripts.shell.Commands
taskRunner:
type: io.kestra.plugin.core.runner.Process
commands:
- sleep 10
timeout: PT5S
Flow-level timeout
There is no flow-level timeout. If you want to cancel a workflow execution if it exceeds a certain duration, you can leverage MAX_DURATION
-type SLA.
Was this page helpful?