来自cron的气流新手,试图了解execution_date
宏如何应用于调度系统以及何时手动触发。我已经阅读了常见问题解答,并设置了一个时间表,以使其期望在正确的execution_date
宏填写后执行。
我想在世界标准时间周四上午10点每周运行我的dag。有时我会手动运行它。我的理解是,dag的开始日期应该比我希望dag开始的实际日期晚一个时间。因此,为了在今天(4/9/2020)使用4/9/20020 execution_date
执行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
执行。我想我仍然感到困惑,因为赶上了关闭,开始日期是一周前,因此我期望20200409
[现在,我找到了另一个答案here,从根本上解释了execution_date
在句点的开始,并且始终在句点后面。因此,我应该继续使用next_ds_nodash
吗?因为按需运行execution_date
会按预期工作,所以这不会为手动触发的dags造成问题。还是在手动触发时next_ds_nodash
转换为ds_nodash
?
问题:是否有一种快乐的介质可以让我在运行计划的AND并手动触发时正确地将execution_date
宏传递给我的每周运行dag?这里的最佳做法是什么?
来自cron的气流的新手,试图了解execution_date宏如何应用于调度系统以及何时手动触发。我已经阅读了常见问题,并为我设置了时间表...
经过更多的研究和测试,确实似乎在手动触发dag时next_ds_nodash
等效于ds_nodash
。