Tasks
Tasks are the steps within a flow.
They represent discrete actions, capable of processing inputs and variables and producing outputs for downstream consumption by end users and other tasks.
Flowable tasks
Kestra orchestrates flows using Flowable tasks. These tasks do not perform heavy computation. Instead, they control orchestration behavior, enabling advanced workflow patterns.
Example Flowable tasks include:
io.kestra.plugin.core.flow.Parallel
io.kestra.plugin.core.flow.Switch
io.kestra.plugin.core.flow.ForEachItem
Read the full list on the Flowable tasks page.
Runnable tasks
Most data processing in Kestra is performed by Runnable tasks.
Unlike Flowable tasks, Runnable tasks perform the actual work — such as file system operations, API calls, or database queries. These tasks can be compute-intensive and are executed by workers.
Example runnable tasks include:
io.kestra.plugin.scripts.python.Commands
io.kestra.plugin.core.http.Request
io.kestra.plugin.notifications.slack.SlackExecution
Core task properties
All tasks share the following core properties:
Field | Description |
---|---|
id | A unique identifier within the flow |
type | The Java Fully Qualified Class Name (FQCN) of the task |
description | The description of the task |
retry | Task retry behavior |
runIf | To skip the task execution if the provided condition evaluates to false |
timeout | Task timeout expressed in ISO 8601 Durations |
disabled | Set it to true to disable execution of the task |
workerGroup.key | To execute this task on a specific Worker Group (EE) |
allowFailure | Boolean flag allowing to the execution to continue even if this task fails |
allowWarning | Boolean flag allowing to the execution to finish with a SUCCESS state even if this task produces a warning |
logLevel | Defines the log level persisted to the backend database. By default, all logs are stored. For example, restricting to INFO prevents DEBUG and TRACE logs from being saved. |
logToFile | Stores logs in internal storage as a file instead of the database. Files can be previewed and downloaded from the Logs and Gantt tabs. Useful for tasks that generate large volumes of logs. Also available for triggers. |
Dynamic vs. static task properties
Task properties can be static or dynamic. Dynamic properties can be set using expressions. To determine whether a property is static or dynamic, check the task’s documentation on the plugin's homepage or in the UI by clicking on the documentation tab for the task.
Some properties are marked as not dynamic because they are complex types (e.g., maps, lists of strings, lists of maps). These act as placeholders for other dynamic properties.
For example, the runTasks property of Databricks' SubmitRun
is not dynamic because it is an array of RunSubmitTaskSetting.
Each RunSubmitTaskSetting
contains its own properties, many of which are dynamic or placeholders for more complex types. Always drill down to the lowest level — most low-level properties are dynamic and can be templated using expressions.
Runnable Tasks
Data processing tasks handled by the workers.
Task Runs
A Task Run is a single execution of an individual task within an Execution, where an execution represents a run of the entire flow. One execution can therefore contain multiple task runs.
Flowable Tasks
Control your orchestration logic.
Was this page helpful?