如何在特定的day_of_month运行Airflow?

时间:2017-11-02 10:21:29

标签: python cron scheduler airflow

我试图在每个月的第二天上午11点运行Airflow,但我没有这样做。我的设置是:

default_args = {
    'owner': 'airflow',
    'depends_on_past': False,
    'start_date': today_date,
    'email': ['mymail'],
    'email_on_failure': True,
    'email_on_retry': True,
    'retries': 1,
    'retry_delay': timedelta(minutes=7),
}

dag = DAG('my_dag', default_args=default_args, schedule_interval='00 11 02 * *')

当我每天运行DAG时,Airflow可以完美运行:

schedule_interval='00 11 * * *'

但我似乎无法按月工作:(

谢谢!

2 个答案:

答案 0 :(得分:1)

如果您想在每月的11:00 AM运行dag。您可以使用此代码。

schedule_interval = '0 11 2 * *'

dag_name = DAG(
    'DAG_ID',
    default_args=default_args,
    schedule_interval=schedule_interval,
)

在计划时间间隔中,0表示分钟,11表示小时,2表示每月的某天,*表示任何月份,下一个*表示一周中的任意一天。

有关更多计划程序信息,请访问此网站。 https://crontab.guru/#0_11_2_ _

答案 1 :(得分:0)

在您提及的评论中,您对datetime.today()使用start_date,这正是造成问题的原因。作业实例在其涵盖的时间段结束后启动,但在您的情况下将永远不会发生。尝试将start_date调整为:

from datetime import date
from dateutil.relativedelta import relativedelta
start_date = date.today() + relativedelta(months=-1)

我建议您重新阅读文档中的Scheduling & Triggers部分。我还花了几次时间来了解如何正确安排DAG。