【问题标题】:Airflow - Get start time of dag runAirflow - 获取 dag 运行的开始时间
【发布时间】:2017-11-03 13:24:15
【问题描述】:

是否可以在 Airflow 中获取 dag 的实际开始时间?开始时间是指 dag 的第一个任务开始运行的确切时间。

我知道我可以使用宏来获取执行日期。如果作业是使用 trigger_dag 运行的,这就是我所说的开始时间,但如果作业是按每日计划运行的,那么 {{ execution_date }} 会返回昨天的日期。

我还尝试将datetime.now().isoformat() 放在 dag 代码的主体中,然后将其传递给一个任务,但这似乎返回的是第一次调用任务的时间,而不是 dag 本身启动的时间。

【问题讨论】:

    标签: airflow apache-airflow


    【解决方案1】:

    {{ dag_run.start_date }}提供dag的实际开始时间

    【讨论】:

      【解决方案2】:

      这是一个老问题,但我正在回答它,因为接受的答案对我不起作用。如果 DAG 运行失败并且重试某些任务,{{ dag_run.start_date }} 会发生变化。

      解决方案是使用:{{ dag_run.get_task_instance('start').start_date }},它使用第一个任务的开始日期(带有 task_id 的 DummyOperator 任务:start)。

      【讨论】:

      • 这很有趣..现在不能尝试但不能帮助发表评论,如果这是获取 DAG 实际开始时间的唯一方法(无论重试任务)。它确实使 start_time 不清楚您是否必须重试任务。
      【解决方案3】:

      我按照你所说的方式进行:

      开始时间是指 dag 的第一个任务开始运行的确切时间

      您仍然可以在第一个任务中使用宏来执行此操作,试试这个{{ task.start_date }}

      所有变量都可以在TaskInstance类中找到: https://github.com/apache/incubator-airflow/blob/master/airflow/models.py#L746

      【讨论】:

      • 我实际上想在后面的任务中获取第一个任务开始运行的时间。这可能吗?
      • 此链接已损坏。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多