气流 - 获取dag运行的开始时间

时间:2017-11-03 13:24:16

标签: airflow apache-airflow

是否有可能在Airflow中获得dag的实际开始时间?从开始时间开始,我指的是dag的第一个任务开始运行的确切时间。

我知道我可以使用宏来获取执行日期。如果使用trigger_dag运行作业,那么我称之为开始时间,但如果作业按日计划运行,则datetime.now().isoformat()将返回昨天的日期。

我还尝试将def cycleencrypt(string, offset=1, index=0, listing, first, last): """Description :param string: description :param offset: description :param index: description :param listing: description :param first: description :param last: description :return description """ offset = offsetctrl(offset) if string >= ord(first) and string <= ord(last): string += offset while string > ord(last): string = ord(first) + (string - ord(last) - 1) listing[index] = chr(string) 放在dag代码的正文中,然后将其传递给任务,但这似乎返回了首次调用任务的时间,而不是dag本身启动的时间。

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:3)

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

答案 2 :(得分:0)

我正按照你所说的方式:

  

从开始时间开始,我的意思是dag的第一个任务开始运行的确切时间

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

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