Airflow 如何获取dag在气流中运行的最新执行时间

Airflow 如何获取dag在气流中运行的最新执行时间,airflow,Airflow,我尝试了下面的代码,但仍然遇到问题 from airflow.models DagModel def get_latest_execution_date(**kwargs): session = airflow.settings.Session() f = open("/home/Insurance/InsuranceDagsTimestamp.txt","w+") try: Insurance_last_dag_run = session

我尝试了下面的代码,但仍然遇到问题

from airflow.models DagModel

def get_latest_execution_date(**kwargs):

session = airflow.settings.Session()

f = open("/home/Insurance/InsuranceDagsTimestamp.txt","w+")

try:
    Insurance_last_dag_run = session.query(DagModel)
    for Insdgrun in Insurance_last_dag_run:
        if Insdgrun is None: 
            f.write(Insdgrun.dag_id+",9999-12-31"+"\n")
        else:
            f.write(Insdgrun.dag_id+","+ Insdgrun.execution_date+"\n")
except:
    session.rollback()
finally:
    session.close()

t1 = PythonOperator(
    task_id='records',
    provide_context=True,
    python_callable=get_latest_execution_date,
    dag=dag)

有没有办法修复和获取最新的dag运行时信息

PythonOperator
op_args
参数已模板化

可调用函数仅将最新的执行日期写入文件,因此您可以通过以下方式实现该函数:

def存储上次执行日期(执行日期):
''将最新执行日期附加到文件
:param execution_date:数据运行的最后执行日期。
'''
打开(“/home/Insurance/insurancedagstiestamp.txt”,“w+”)作为f:
f、 写入(执行日期)
t1=蟒蛇算子(
task_id=“记录”,
提供上下文=True,
python\u callable=store\u last\u execution\u date,
op_args=[
“{{dag.get_latest_execution_date()}}”,
],
dag=dag
)

有多种方法可以获取最近一次运行的数据。一种方法是使用气流模型

从afflow.models导入DagRun
def get_最近的_dag_运行(dag_id):
dag_runs=DagRun.find(dag_id=dag_id)
dag_runs.sort(key=lambda x:x.execution_date,reverse=True)
如果dag_运行其他无,则返回dag_运行[0]
dag_运行=获取最新的(fake-dag-id-001)
如果dag_运行:
打印(f'最近的DagRun在:{dag_run.execution_date}'执行)

您可以在中找到有关DagRun模型及其属性的更多信息。

A quick返回一些结果,其中(1)、(2)和(3)似乎适用于您的问题。另外,请详细说明。但我还是遇到了问题。@y2k shubham。。对于回复,我得到的函数“get_last_dag_run”无效。我试图得到所有的dag,而不是任何特定的dag@y2k-shubham。。你能帮我建议我需要导入哪个模块以获得dag的最后成功执行日期吗?我尝试了dag模型,但没有得到(假设你要通过某个任务/操作符运行此脚本)你需要使用的:
my_task.dag
,其中
my_task
是对你的任务/操作符的引用(在自定义运算符中,可以使用
self