【发布时间】:2019-02-08 18:18:24
【问题描述】:
我有任务重试逻辑,但不清楚 Airflow 在重试开启时如何处理任务失败。
他们的documentation 只是声明on_failure_callback 在任务失败时被触发,但是如果该任务失败并且还标记为重试,这是否意味着on_failure_callback 和on_retry_callback 都会被调用?
【问题讨论】:
标签: airflow
我有任务重试逻辑,但不清楚 Airflow 在重试开启时如何处理任务失败。
他们的documentation 只是声明on_failure_callback 在任务失败时被触发,但是如果该任务失败并且还标记为重试,这是否意味着on_failure_callback 和on_retry_callback 都会被调用?
【问题讨论】:
标签: airflow
重试逻辑/参数将在失败逻辑/参数之前发生。因此,如果您将任务设置为重试两次,它将在失败之前尝试再次运行两次(并因此执行 on_retry_callback )(然后执行 on_failure_callback)。
确认执行顺序的简单方法是将email_on_retry 和email_on_failure 设置为True 并查看它们出现的顺序。您可以实际确认它会在失败前重试。
default_args = {
'owner': 'me',
'start_date': datetime(2019, 2, 8),
'email': ['you@work.com'],
'email_on_failure': True,
'email_on_retry': True,
'retries': 1,
'retry_delay': timedelta(minutes=1)
}
【讨论】:
retry_delay: timedelta = timedelta(seconds=300) 根据此处的文档airflow.apache.org/docs/apache-airflow/stable/_api/airflow/…