气流-告知DAG跳过每个月的2号

时间:2019-05-21 18:50:42

标签: python python-2.7 cron airflow airflow-scheduler

我建立了一个简单的AirFlow管道来处理传入的历史信息。由于数据的性质,每个月的第二天都有大量的数据。在那几天,我想以10分钟为增量来处理数据:*/10 * 2 * *

剩下的日子,我想以2小时的时间'0 */2 * * *'

正常处理

如何告诉我的“正常” DAG跳过每个月的2号?

DAG本身非常简单:

dag = DAG(
dag_name,
catchup=True,
default_args=default_args,
schedule_interval=schedule_interval
)   


with dag:
    historical = HistoricalToS3Operator(
    task_id=dag_name + '_extract',
    model=HistoricalModel.INVOICES
    )



    redshift = S3ToRedshiftOperator(
        task_id=dag_name + '_load',
        load_type='upsert',
        type_check=False,
        primary_key=primary_key,
        distkey=distkey,
        sortkey=sortkey,
        incremental_key=incremental_key,
        data_type='json',
        dag=dag
        )
historical >> redshift

1 个答案:

答案 0 :(得分:0)

使用python库croniter进行气流处理,这就是为什么使用示例轻松解释的原因:

尝试这个:

iter = croniter('0 0 1,3-31 * *', base)

In [27]: print(iter.get_next(datetime))
2010-02-26 00:00:00

In [28]: print(iter.get_next(datetime))
2010-02-27 00:00:00

In [29]: print(iter.get_next(datetime))
2010-02-28 00:00:00

In [30]: print(iter.get_next(datetime))
2010-03-01 00:00:00

In [31]: print(iter.get_next(datetime))
2010-03-03 00:00:00