Airflow 了解气流';承包商的执行日期和时间表

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

来自cron的新手,试图了解
执行日期
宏如何应用于调度系统以及何时手动触发。我已经阅读了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