Airflow 如何防止追赶DAG?
我有以下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
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