不需要的 DAG 在 Airflow 中运行
unwanted DAG runs in Airflow
我这样配置我的 DAG:
default_args = {
'owner': 'Aviv',
'depends_on_past': False,
'start_date': datetime(2017, 1, 1),
'email': ['aviv@oron.com'],
'email_on_failure': False,
'email_on_retry': False,
'retries': 0,
'retry_delay': timedelta(minutes=1)
}
dag = DAG(
'MyDAG'
, schedule_interval=timedelta(minutes=3)
, default_args=default_args
, catchup=False
)
并且出于某种原因,当我取消暂停 DAG 时,它会立即执行两次。
知道为什么吗?是否有任何规则可以告诉这个 DAG 永远不会同时 运行 超过一次?
您可以这样指定 max_active_runs
:
dag = airflow.DAG(
'customer_staging',
schedule_interval="@daily",
dagrun_timeout=timedelta(minutes=60),
template_searchpath=tmpl_search_path,
default_args=args,
max_active_runs=1)
我从未见过这种情况发生,您确定这些运行不是回填吗,请参阅:
我想是因为你错过了预定的时间,当你再次打开它时,气流会自动回填它。您可以通过以下方式禁用它
catchup_by_default = airflow.cfg 中的假。
我这样配置我的 DAG:
default_args = {
'owner': 'Aviv',
'depends_on_past': False,
'start_date': datetime(2017, 1, 1),
'email': ['aviv@oron.com'],
'email_on_failure': False,
'email_on_retry': False,
'retries': 0,
'retry_delay': timedelta(minutes=1)
}
dag = DAG(
'MyDAG'
, schedule_interval=timedelta(minutes=3)
, default_args=default_args
, catchup=False
)
并且出于某种原因,当我取消暂停 DAG 时,它会立即执行两次。 知道为什么吗?是否有任何规则可以告诉这个 DAG 永远不会同时 运行 超过一次?
您可以这样指定 max_active_runs
:
dag = airflow.DAG(
'customer_staging',
schedule_interval="@daily",
dagrun_timeout=timedelta(minutes=60),
template_searchpath=tmpl_search_path,
default_args=args,
max_active_runs=1)
我从未见过这种情况发生,您确定这些运行不是回填吗,请参阅:
我想是因为你错过了预定的时间,当你再次打开它时,气流会自动回填它。您可以通过以下方式禁用它 catchup_by_default = airflow.cfg 中的假。