我建立了一个简单的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
答案 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