Airflow - 获取 dag 的开始时间 运行

Airflow - Get start time of dag run

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

我知道我可以使用宏来获取执行日期。如果工作是 运行 使用 trigger_dag 这就是我所说的开始时间但是如果工作是 运行 每天的时间表那么 {{ execution_date }} returns昨天的日期。

我也曾尝试将 datetime.now().isoformat() 放在 dag 代码的主体中,然后将其传递给任务,但这似乎 return 任务首次被调用的时间而不是dag 本身开始了。

我按照你说的方式进行:

By start time I mean the exact time the first task of a dag starts running

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

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

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

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

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