gpt4 book ai didi

airflow - 了解 Airflow 的 execution_date 和 schedule

转载 作者:行者123 更新时间:2023-12-04 15:31:50 27 4
gpt4 key购买 nike

来自 cron 的 Airflow 的新手,试图了解 execution_date 宏如何应用于调度系统以及何时手动触发。我已经阅读了常见问题解答,并根据我预期的时间表设置了执行时间,并填写了正确的 execution_date 宏。

我想每周在世界标准时间星期四上午 10 点运行我的 dag。偶尔我会手动运行它。我的理解是 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 日准时执行,但它使用 20200402 而不是 20200409 的 ds_nodash 执行。我想我仍然很困惑,因为 catchup 已关闭,开始日期是一周在此之前,我期待 20200409。

现在,我找到了另一个答案here ,这基本上解释了 execution_date 处于周期的开始,并且总是落后一个周期。那么今后我应该使用 next_ds_nodash 吗?这不会为手动触发的 dag 带来问题,因为 execution_date 在按需运行时按预期工作。还是 next_ds_nodash 在手动触发时转换为 ds_nodash

问题:是否有一种快乐的媒介可以让我在计划运行时和手动触发时正确获取传递到我的每周运行 dag 的 execution_date 宏?这里的最佳做法是什么?

最佳答案

经过更多的研究和测试,当手动触发 dag 时,next_ds_nodash 确实变得等同于 ds_nodash

因此,如果您处于类似情况,请执行以下操作以正确安排每周运行的作业(使用可选的手动触发器)

  1. start_date 设置在您实际想要开始的日期之前一周
  2. 相应地配置 schedule_interval 以运行作业
  3. next 执行日期宏用于您希望获得作业运行时的预期当前执行日期的任何位置。

这对我有用,但我不需要处理任何追赶/回填选项,所以 YMMV。

关于airflow - 了解 Airflow 的 execution_date 和 schedule,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61131297/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com