J.B*_*ers 5 python airflow airflow-scheduler
我正在开发依赖于另一个DAG的DAG。因此,我正在使用ExternalTaskSensor。但是,在使用此Sensor时,我注意到一些奇怪的行为。
如果将soft_fail参数设置为True(如果任务失败,它将状态设置为“跳过”而不是失败),则该任务将永远不会重试。虽然我希望任务重试指定次数(通过retries参数)。如果将soft_fail参数设置为False,它将重试。请参阅下面的DAG最小示例。
我想念什么吗?
from airflow import DAG
from airflow.operators.dummy_operator import DummyOperator
from airflow.operators.sensors import ExternalTaskSensor
from datetime import datetime, timedelta
dag_name = 'soft_fail_example'
schedule_interval = "0 * * * *"
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': datetime(2018, 1, 1),
'email': [],
'email_on_failure': False,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(seconds=30),
}
test_dag = DAG(dag_name, default_args=default_args, schedule_interval=schedule_interval,
catchup=False, max_active_runs=1)
ets = ExternalTaskSensor(task_id="test_external_task_sensor", dag=test_dag, soft_fail=True,
timeout=10, retries=5, poke_interval=1, external_dag_id="dependent_dag_id",
external_task_id="dependent_task_id")
dummy_task = DummyOperator(task_id="collection_task", dag=test_dag)
dummy_task << ets
Run Code Online (Sandbox Code Playgroud)