Airflow 如果DAG已在运行,则跳过运行

Airflow 如果DAG已在运行,则跳过运行,airflow,airflow-scheduler,Airflow,Airflow Scheduler,我有一个DAG,我需要在同一时间只运行一个实例。为了解决这个问题,我使用max_active_runs=1,这很好: dag_args = { 'owner': 'Owner', 'depends_on_past': False, 'start_date': datetime(2018, 01, 1, 12, 00), 'email_on_failure': False } sched = timedelta(hours=1) dag = DAG(job_id,

我有一个DAG,我需要在同一时间只运行一个实例。为了解决这个问题,我使用max_active_runs=1,这很好:

dag_args = {
    'owner': 'Owner',
    'depends_on_past': False,
    'start_date': datetime(2018, 01, 1, 12, 00),
    'email_on_failure': False
}

sched = timedelta(hours=1)
dag = DAG(job_id, default_args=dag_args, schedule_interval=sched, max_active_runs=1)
问题是:

当要触发DAG并且有一个实例正在运行时,AirFlow将等待此运行完成,然后再次触发DAG

我的问题是:

在这种情况下,有没有办法跳过此运行,使DAG在此执行之后不会运行


谢谢

您可以在dag中放置一个任务,检查气流数据库的dag_运行表中是否有状态为“正在运行”的具有相同dag_id的dag,如果有两个实例为同一dag运行,您可以使dag失败。@ShahbazAli这是个好主意!但是我如何才能找到DAG ID以及如何查询它呢?谢谢请注意,它们不会同时运行,因为我将max_active_runs设置为1。气流只是在前一个触发器完成之前一直保持触发。我可以尝试类似的方法,但不确定这是否是解决此问题的最佳方法: