# Retries

Kestra provides a task retry feature. This sub-system makes it convenient to add retry behavior on failed executions, based on the retry configuration in the flow description.

# Example

Below is a flow sample that executes a retry on a task failure for a maximum of 5 attemps every 15 minutes:

- id: retry-sample
  type: io.kestra.core.tasks.debugs.Echo
  format: my output for task {{task.id}}
  timeout: PT10M
    maxAttempt: 5
    type: constant
    interval: PT15M

# Retry options for all type

name type description
type string Retry behavior to apply. Can be one of constant, exponential, random.
maxAttempt integer Number of retries performed before the system stops retrying.
maxDuration Duration Maximum delay the execution is retried. Once passed, the task is no more processed.
warningOnRetry Boolean Flag the execution as warning if any retry was done on this task.

# Duration

Some options above have to be filled with a duration notation.
Durations are expressed in ISO 8601 Durations (opens new window), here 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

# Retry types

# constant

This establishes constant retry times, where if the time is set to 10 minutes, it retries every 10 minutes.

name type description
interval Duration Duration between each retry.

# exponential

This establishes retry behavior that waits longer between each retry e.g. 1s, 5s, 15s ...

name type description
interval Duration Duration between each retry.
maxInterval Duration Max Duration between each retry.
delayFactor Double Multiplier for interval on each retry, default is 2. For example, with an interval of 30s and a delay factor of 2, retry will append at 30s, 1m30, 3m30, ...

# random

This establishes retries with a random delay within min and max limits.

name type description
minInterval Duration Minimal duration between each retry.
maxInterval Duration Maximum duration between each retry.