How to Schedule Pipelines¶
This guide shows how to configure recurring schedules for Kedro AzureML Pipeline jobs using cron expressions, recurrence rules, or reusable schedule definitions.
Prerequisites¶
- A job defined under
jobs:inconf/base/azureml.yml(see Getting Started) - The target Azure ML workspace and compute configured
- Azure credentials available (
az loginor service principal) - Familiarity with cron expressions (for cron schedules)
Attach a cron schedule to a job¶
Add a schedule.cron block inside the job definition:
jobs:
nightly:
pipeline:
pipeline_name: "__default__"
schedule:
cron:
expression: "0 2 * * *"
time_zone: "UTC"
The time_zone field accepts IANA time zone names (e.g. "Europe/London") or "UTC".
Create or update the schedule in Azure ML:
Use a recurrence schedule¶
Recurrence schedules let you express intervals, days, hours, and minutes without cron syntax:
jobs:
weekly:
pipeline:
pipeline_name: "__default__"
schedule:
recurrence:
frequency: "week"
interval: 1
schedule:
week_days: ["Monday", "Wednesday", "Friday"]
hours: [9]
minutes: [0]
Valid frequency values are "minute", "hour", "day", "week", and "month".
Share a schedule across multiple jobs¶
Define schedules once under schedules: and reference them by name:
schedules:
business_hours:
cron:
expression: "0 9 * * 1-5"
time_zone: "Europe/London"
jobs:
training:
pipeline:
pipeline_name: "__default__"
schedule: "business_hours"
validation:
pipeline:
pipeline_name: "validation"
schedule: "business_hours"
Attach multiple triggers to one job¶
A job's schedule may be a list. Each entry deploys one Azure ML schedule
trigger against the same job, so a single job can fire on several cadences (for
example a nightly and a midday run) without splitting it into separate jobs:
Scheduling deploys one trigger per entry. A single schedule keeps the job's name;
with a list, each trigger is named {job}-{schedule}. Deleting the job's
schedules (schedule --delete -j inference) removes all of them.
Trigger names track the list
Trigger names are derived from the list, so editing it can orphan triggers
already deployed in Azure ML. Going from a single schedule to a list renames
the original (inference becomes inference-nightly). Inline schedules in a
list are named by position (inference-0, inference-1), so reordering them
renames them. Prefer named references (schedule: [nightly, midday]) over
inline blocks in a list, and re-run schedule -j <job> after editing so the
new names are deployed; prune any orphaned triggers in Azure ML Studio.
Preview without creating¶
Use --dry-run to inspect what will be created without calling Azure ML:
Schedule multiple jobs at once¶
Pass -j multiple times to schedule several jobs together:
Override workspace at run time¶
The -w flag overrides the workspace for the current invocation. It does not modify azureml.yml.
See also¶
- Configuration reference for the full
schedulefield documentation - CLI reference for all
kedro azureml scheduleflags - Troubleshoot if your schedule is not triggering
- Deploy from CI/CD for automating schedule creation in pipelines