We've been converting our cron jobs over to Airflow DAGs and I am having difficulties figuring out exactly how the scheduling of DAGs works in Airflow. Some DAGs need to run at specific times of the day (ie 7am), other DAGs need to run at a specific day/time of the month (ie 6am on the 15th of every month).
Generally, Airflow seems to be running daily DAGs correctly. So, schedule_interval = '0 7 * * * with 'start_date': datetime(2017,4,7) runs everyday at 7am.
However, for a monthly DAG (schedule_interval = '0 6 15 * *' and 'start_date': datetime(2017,4,7)) it ran on April 15 at 6am, but didn't hasn't run since then. Other DAGs I've tried to schedule monthly similarly fail to run after the first month.
Airflow's documentation on scheduling is, IMO, muddy and answers to other SO questions have made me more confused. I'm hoping someone out there can clarify what is going wrong with my understanding and the DAGs I'm trying to schedule monthly.
execution_date(Run in the UI) of 2017-04-15 as being the date when the DAG ran. Please look at the first task's start time (Start in the UI), It actually ran the 2017-04-15 run on 2017-05-15. This is consistent with the answer you got below. - dlamblin