我正在尝试从python代码中手动触发dag,如下所示:
from airflow_local.operators.mmttrigger_dagrun_operator import \
MMTTriggerDagRunOperator
# in loop
MMTTriggerDagRunOperator(
task_id='trigger_dagrun',
execution_date=datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S'),
python_callable=trigger_dag,
trigger_dag_id=log_fetch).execute(kwargs)
time.sleep(1)
此代码置于有限循环中。
我知道,对于相同的dag触发器尝试,每次dag运行的执行日期都必须是唯一的,这解释了time.sleep(1)
但是,在运行循环之后,成功触发了一些dag,并且循环因尝试将重复的条目插入到气流数据库的dag_stats表中而出错而停止
错误: (pymysql.err.IntegrityError)(1062,“键'PRIMARY'的重复条目'log_fetch-running'”))[SQL:'INSERT INTO dag_stats(dag_id,state,count,dirty)值(%(dag_id)s,% (state)s,%(count)s,%(dirty)s)'] [参数:{'dag_id':log_fetch','state':'running','count':0,'dirty':1} ]
我无法理解这种行为,因此,如果有人可以帮助我找出导致此错误的原因,我将不胜感激。
谢谢。