Airflow 了解气流';承包商的执行日期和时间表
来自cron的新手,试图了解Airflow 了解气流';承包商的执行日期和时间表,airflow,airflow-scheduler,Airflow,Airflow Scheduler,来自cron的新手,试图了解执行日期宏如何应用于调度系统以及何时手动触发。我已经阅读了faq,并设置了一个时间表,以确保在填写正确的execution\u date宏的情况下执行预期的任务 我想每周在协调世界时周四上午10点运行dag。偶尔我会手动运行它。我的理解是dag的开始日期应该比我希望dag开始的实际日期晚一个周期。因此,为了今天在2020年4月9日执行dag,我设置了以下默认值: default_args = { 'owner': 'airflow', 'start_d
执行日期
宏如何应用于调度系统以及何时手动触发。我已经阅读了faq,并设置了一个时间表,以确保在填写正确的execution\u date
宏的情况下执行预期的任务
我想每周在协调世界时周四上午10点运行dag。偶尔我会手动运行它。我的理解是dag的开始日期应该比我希望dag开始的实际日期晚一个周期。因此,为了今天在2020年4月9日执行dag,我设置了以下默认值:
default_args = {
'owner': 'airflow',
'start_date': dt.datetime(2020, 4, 2),
'concurrency': 4,
'retries': 0
}
dag的定义如下:
with DAG('my_dag',
catchup=False,
default_args=default_args,
schedule_interval='0 10 * * 4',
max_active_runs=1,
concurrency=4,
) as dag:
opr_exc = BashOperator(task_id='execute_dag',bash_command='/path/to/script.sh --dt {{ ds_nodash }}')
虽然dag在今天4月9日准时执行,但它执行的是20200402而不是20200409的ds_nodash
。我想我还是很困惑,因为catchup被关闭了,开始日期是一周前,所以我预计20200409
现在,我找到了另一个答案,这基本上解释了执行日期
在周期的开始,并且总是比周期晚一个周期。那么接下来我应该使用next\u ds\u nodash
?这不会给手动触发的DAG带来问题吗,因为当按需运行时,execution\u date
工作正常。或者手动触发时,next\u ds\u nodash
转换为ds\u nodash
问题:是否有一种令人满意的方法可以让我在运行计划和手动触发时正确地将
执行日期
宏传递到每周运行dag?这里的最佳实践是什么?经过更多的研究和测试,在手动触发dag时,next\u ds\u nodash
似乎确实相当于ds\u nodash
因此,如果您处于类似的情况,请执行以下操作以正确安排每周运行作业(使用可选的手动触发器)
next
执行日期宏李>
这对我来说很有用,但我不需要处理任何追赶/回填选项,所以YMMV