了解 Airflow 的 execution_date 和时间表
Understanding Airflow's execution_date and schedule
来自 cron 的气流的新手,试图了解 execution_date
宏如何应用于调度系统以及何时手动触发。我已经阅读了常见问题解答,并根据我预期的时间表设置了填充正确 execution_date
宏的执行计划。
我想 运行 每周四上午 10 点 UTC。偶尔我会 运行 手动。我的理解是 dag 的开始日期应该比我希望 dag 开始的实际日期晚一个时期。因此,为了今天在 2020 年 4 月 9 日以 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 日准时执行,但它执行的 ds_nodash
为 20200402 而不是 20200409。我想我仍然很困惑,因为赶上已关闭,开始日期是一周前因此我期待 20200409。
现在,我找到了另一个答案 ,这基本上解释了 execution_date
处于周期的开始,并且总是落后一个周期。那么今后我应该使用 next_ds_nodash
吗?这不会为手动触发的 dag 造成问题,因为 execution_date
在按需 运行 时按预期工作。或者 next_ds_nodash
是否在手动触发时转换为 ds_nodash
?
问题:当 运行ning 计划并且什么时候手动触发?这里的最佳做法是什么?
经过更多的研究和测试,当手动触发 dag 时,next_ds_nodash
确实等同于 ds_nodash
。
因此,如果您遇到类似情况,请执行以下操作以正确安排您的每周 运行 工作(可选择手动触发)
- 将
start_date
设置在您实际想要开始的日期前一周
- 相应地配置
schedule_interval
以便 运行 作业
- 在您希望获得作业 运行 时的预期当前执行日期的任何地方使用
next
执行日期宏。
这对我有用,但我不必处理任何 catchup/backfill 选项,所以 YMMV。
来自 cron 的气流的新手,试图了解 execution_date
宏如何应用于调度系统以及何时手动触发。我已经阅读了常见问题解答,并根据我预期的时间表设置了填充正确 execution_date
宏的执行计划。
我想 运行 每周四上午 10 点 UTC。偶尔我会 运行 手动。我的理解是 dag 的开始日期应该比我希望 dag 开始的实际日期晚一个时期。因此,为了今天在 2020 年 4 月 9 日以 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 日准时执行,但它执行的 ds_nodash
为 20200402 而不是 20200409。我想我仍然很困惑,因为赶上已关闭,开始日期是一周前因此我期待 20200409。
现在,我找到了另一个答案 execution_date
处于周期的开始,并且总是落后一个周期。那么今后我应该使用 next_ds_nodash
吗?这不会为手动触发的 dag 造成问题,因为 execution_date
在按需 运行 时按预期工作。或者 next_ds_nodash
是否在手动触发时转换为 ds_nodash
?
问题:当 运行ning 计划并且什么时候手动触发?这里的最佳做法是什么?
经过更多的研究和测试,当手动触发 dag 时,next_ds_nodash
确实等同于 ds_nodash
。
因此,如果您遇到类似情况,请执行以下操作以正确安排您的每周 运行 工作(可选择手动触发)
- 将
start_date
设置在您实际想要开始的日期前一周 - 相应地配置
schedule_interval
以便 运行 作业 - 在您希望获得作业 运行 时的预期当前执行日期的任何地方使用
next
执行日期宏。
这对我有用,但我不必处理任何 catchup/backfill 选项,所以 YMMV。