当预任务失败且depends_on_past = true时,如何触发气流中的任务?

时间:2019-07-11 03:31:13

标签: python etl airflow

我有一个任务需要每5分钟触发一次。接下来的任务需要等待上一个任务完成(无论上一个任务的成功或失败)。

这是我配置参数的方式。

default_args = {
    'owner': 'airflow',
    'start_date': datetime(2019, 7, 1, 8, 30),
    'max_active_runs': 1,
    'depends_on_past': True,
    'execution_timeout': timedelta(seconds=300)
}

dag = DAG(
    dag_id='dag1', default_args=default_args,
    schedule_interval='*/5 8-16 * * *',
    dagrun_timeout=timedelta(minutes=600))

def task1(ds, **kwargs):
    #do something

task1 = PythonOperator(
    task_id='task1',
    provide_context=True,
    python_callable=task1,
    trigger_rule= 'all_done',
    dag=dag)

在我的配置下,task1将在前一个状态成功时触发,并在前一个状态失败时被阻塞。 我在气流文档中找到了描述,“ trigger_rule可与depends_on_past(布尔值)结合使用,将其设置为True时,如果先前的任务计划未成功,则不会触发任务”。

那么无论先前的状态如何,在上一个task1完成后如何实现触发task1的目的?

1 个答案:

答案 0 :(得分:1)

max_active_runs:1只允许一次执行dag,涵盖了您等待之前的要求。

您有2个depends_on_past设置。删除一个并将其设置为false。