Cron & Time Intervals¶
You may set your Dag to run on a simple schedule by setting its schedule argument to either a cron expression, a datetime.timedelta object, or one of the Cron Presets.
from airflow.sdk import DAG import datetime dag = DAG("regular_interval_cron_example", schedule="0 0 * * *", ...) dag = DAG("regular_interval_cron_preset_example", schedule="@daily", ...) dag = DAG("regular_interval_timedelta_example", schedule=datetime.timedelta(days=1), ...) Cron Presets¶
For more elaborate scheduling requirements, you can implement a custom timetable. Note that Airflow parses cron expressions with the croniter library which supports an extended syntax for cron strings. See their documentation in github. For example, you can create a Dag schedule to run at 12AM on the first Monday of the month with their extended cron syntax: 0 0 * * MON#1.
Tip
You can use an online editor for CRON expressions such as Crontab guru
preset | meaning | cron |
|---|---|---|
| Don’t schedule, use for exclusively “externally triggered” Dags | |
| Schedule once and only once | |
| Run as soon as the previous run finishes | |
| Run once an hour at the end of the hour |
|
| Run once a day at midnight (24:00) |
|
| Run once a week at midnight (24:00) on Sunday |
|
| Run once a month at midnight (24:00) of the first day of the month |
|
| Run once a quarter at midnight (24:00) on the first day |
|
| Run once a year at midnight (24:00) of January 1 |
|
Your Dag will be instantiated for each schedule along with a corresponding Dag Run entry in the database backend.