Run a list of tasks repeatedly until the expected condition is met.
Use this task if your workflow requires blocking calls polling for a job to finish or for some external API to return a specific HTTP response.
You can access the outputs of the nested tasks in the condition
property. The condition
is evaluated after all nested task runs finish.
type: "io.kestra.plugin.core.flow.LoopUntil"
Examples
Run a task until it returns a specific value. Note how you don't need to take care of incrementing the iteration count. The task will loop and keep track of the iteration outputs behind the scenes — you only need to specify the exit condition for the loop.
id: loop_until
namespace: company.team
tasks:
- id: loop
type: io.kestra.plugin.core.flow.LoopUntil
condition: "{{ outputs.return.value == '4' }}"
tasks:
- id: return
type: io.kestra.plugin.core.debug.Return
format: "{{ outputs.loop.iterationCount }}"
Properties
condition *Requiredstring
The condition expression that should evaluate to true
or false
.
Boolean coercion allows 0, -0, null and '' to evaluate to false; all other values will evaluate to true.
checkFrequency Non-dynamicLoopUntil-CheckFrequency
{
"interval": "PT1M"
}
Check the frequency configuration.
failOnMaxReached booleanstring
false
If set to true
, the task run will end in a failed state once the maxIterations
or maxDuration
are reached.
Outputs
iterationCount integer
Definitions
io.kestra.plugin.core.flow.LoopUntil-CheckFrequency
interval string
PT1M
duration
Interval between each iteration.
maxDuration string
duration
Maximum duration of the task.
If not set, defines an unlimited maximum duration of iterations.
maxIterations integerstring
Maximum count of iterations.
If not set, defines an unlimited number of iterations.