回填/清除旧DAG时dagrun_timeout是否会干扰?

时间:2019-06-14 16:11:02

标签: airflow airflow-scheduler

我有一个如下所示的DAG,dagrun_timeout设置为4个小时。当我进入UI并清除从start_date到当前的所有任务时,所有DAG均设置为运行状态。

4小时后,任何尚未标记为成功的DAG都将标记为失败,即使它们尚未真正启动。我想知道这是否是故意的行为。

如果我想以此方式重新运行DAG,是否应该删除dagrun_timeout并将超时放在任务级别上?还是如果我想在没有airflow backfill干扰的情况下重新运行所有DAG,应该改用dagrun_timeout吗?

理想情况下,我希望能够使用UI,因为其他团队成员希望重新运行DAG。


default_args = {
    'owner': 'airflow',
    'depends_on_past': False,
    'start_date': datetime(2019, 5, 1),
    'email': ['lol@example.com'],
    'email_on_failure': True,
    'email_on_retry': False,
    'retries': 1,
    'retry_delay': timedelta(minutes=1),
}


dag = DAG(
    dag_id='example_dag',
    default_args=default_args,
    max_active_runs=8,
    schedule_interval='15 * * * *',
    dagrun_timeout=timedelta(minutes=60*4),
)

2 个答案:

答案 0 :(得分:1)

我认为这是预期的行为,但只是一个误导性的参数名称。之前已经在邮件列表中进行了讨论,请参见https://lists.apache.org/thread.html/7bda30f518bedbaaa763ba73a5e3bbe386cb0d090834c819f81c65ec@%3Cdev.airflow.apache.org%3E

将超时时间提高到任务级别是一个合理的选择,只是要了解它会有所不同,因为您可能希望确定每个任务的合理超时时间。如果在正常情况下(非回填)提醒您DAG运行时间超过4小时至关重要,那么我将在所有任务上添加4小时SLA。当您清除要回填的任务时,它将立即触发SLA未命中,但至少它们应该一次全部批量发生,并且不会使您的运行失败。

答案 1 :(得分:0)

我遇到了同样的问题。只需删除 dagrun_timeout 参数。重新运行任务即可正常运行。