Airflow 如何防止追赶DAG?

Airflow 如何防止追赶DAG?,airflow,Airflow,我有以下DAG: default_args = { 'owner': 'Airflow', 'depends_on_past': False, 'start_date': datetime(2018, 07, 19, 11,0,0), 'email': ['me@me.com'], 'email_on_failure': False, 'email_on_retry': False, 'retries': 5, 'retry_del

我有以下DAG:

default_args = {
    'owner': 'Airflow',
    'depends_on_past': False,
    'start_date': datetime(2018, 07, 19, 11,0,0),
    'email': ['me@me.com'],
    'email_on_failure': False,
    'email_on_retry': False,
    'retries': 5,
    'retry_delay': timedelta(minutes=2),
    'catchup' : False,
    'depends_on_past' : False,
}


with DAG('some_dag', schedule_interval=timedelta(minutes=30), max_active_runs=1, default_args=default_args) as dag:
这个dag每30分钟运行一次。它重写表中的数据(全部删除并写入)。因此,如果气流下降2天,在这段时间内运行所有缺失的dag运行是没有意义的

然而,上述定义并不适用。在气流停止2天后,它仍然尝试运行所有丢失的任务

我如何解决这个问题?

好的。我解决了。 显然,
“catchup”没有任何意义:在
默认参数上为False。它什么也不做。
我把密码改成

default_args = {
    'owner': 'Airflow',
    'depends_on_past': False,
    'start_date': datetime(2018, 07, 19, 11,0,0),
    'email': ['me@me.com'],
    'email_on_failure': False,
    'email_on_retry': False,
    'retries': 5,
    'retry_delay': timedelta(minutes=2),
    'depends_on_past' : False,
}


with DAG('some_dag', catchup=False, schedule_interval=timedelta(minutes=30), max_active_runs=1, default_args=default_args) as dag:
现在它工作了。

好的。我解决了。 显然,
“catchup”没有任何意义:在
默认参数上为False。它什么也不做。
我把密码改成

default_args = {
    'owner': 'Airflow',
    'depends_on_past': False,
    'start_date': datetime(2018, 07, 19, 11,0,0),
    'email': ['me@me.com'],
    'email_on_failure': False,
    'email_on_retry': False,
    'retries': 5,
    'retry_delay': timedelta(minutes=2),
    'depends_on_past' : False,
}


with DAG('some_dag', catchup=False, schedule_interval=timedelta(minutes=30), max_active_runs=1, default_args=default_args) as dag:
现在它可以工作了。

根据文档:

  • 向dag参数添加
    dag.catchup=False
  • catchup\u按默认值=False添加到
    aiffort.cfg
根据您的用例,可以设置一个好的实践,默认值为False,然后仅在给定的dag需要catchup时使用
dag.catchup=True

根据文件:

  • 向dag参数添加
    dag.catchup=False
  • catchup\u按默认值=False添加到
    aiffort.cfg
根据您的用例,可以设置一个好的实践,默认值为False,然后仅在给定的dag需要catchup时使用
dag.catchup=True