如何在 Airflow 中将 SLA 添加到 ETL 作业 运行?
How to add SLA's to ETL jobs running in Airflow?
我是 Apache Airflow 的新手。我在 Airflow 中已经有一些 DAG 运行。现在我想向其中添加 SLA,以便我可以跟踪和监控任务并在出现问题时收到警报。
我知道如何使用 timedelta() 将 SLA 添加到 DAG default_args,如下所示
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': datetime(2015, 6, 1),
'email': ['airflow@example.com'],
'email_on_failure': False,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(minutes=5),
'sla': timedelta(minutes=30)
}
但我有以下问题:
我们可以为整个 DAG 指定 SLA 还是只为单独的任务指定?
对于 运行 30 分钟的 DAG,SLA 时间是多少合适?
对于 运行 5 分钟的任务,SLA 时间是多少合适?
我们在指定 SLA 时还需要考虑 retry_delay 吗?
We can specify SLA for whole DAG or only for tasks individually?
我认为 SLA 仅作为一个整体提供 for individual tasks and not for DAG。但我认为通过在末尾创建一个任务 (DummyOperator
) 来实现整个 DAG 的相同效果(虽然不能肯定地说),该任务依赖于你的 DAG 的所有其他任务并在其上设置 SLA关闭任务
What would be appropriate SLA time for the DAG that is running for 30
minutes?
这完全取决于任务的关键性、失败率等因素。但我建议您从 'strict-enough' timedelta(例如 5 分钟)开始,然后对其进行调整(增加或减少) 从那里
What would be appropriate SLA time for a task that is running for 5
minutes?
同上,从 1 分钟开始调整
Do we need to consider retry_delay as well while specifying SLA?
按照docs,我会说是
:param sla: time by which the job is expected to succeed. Note that
this represents the ``timedelta`` after the period is closed. For
example if you set an SLA of 1 hour, the scheduler would send an email
soon after 1:00AM on the ``2016-01-02`` if the ``2016-01-01`` instance
has not succeeded yet.
我是 Apache Airflow 的新手。我在 Airflow 中已经有一些 DAG 运行。现在我想向其中添加 SLA,以便我可以跟踪和监控任务并在出现问题时收到警报。
我知道如何使用 timedelta() 将 SLA 添加到 DAG default_args,如下所示
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': datetime(2015, 6, 1),
'email': ['airflow@example.com'],
'email_on_failure': False,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(minutes=5),
'sla': timedelta(minutes=30)
}
但我有以下问题:
我们可以为整个 DAG 指定 SLA 还是只为单独的任务指定?
对于 运行 30 分钟的 DAG,SLA 时间是多少合适?
对于 运行 5 分钟的任务,SLA 时间是多少合适?
我们在指定 SLA 时还需要考虑 retry_delay 吗?
We can specify SLA for whole DAG or only for tasks individually?
我认为 SLA 仅作为一个整体提供 for individual tasks and not for DAG。但我认为通过在末尾创建一个任务 (DummyOperator
) 来实现整个 DAG 的相同效果(虽然不能肯定地说),该任务依赖于你的 DAG 的所有其他任务并在其上设置 SLA关闭任务
What would be appropriate SLA time for the DAG that is running for 30 minutes?
这完全取决于任务的关键性、失败率等因素。但我建议您从 'strict-enough' timedelta(例如 5 分钟)开始,然后对其进行调整(增加或减少) 从那里
What would be appropriate SLA time for a task that is running for 5 minutes?
同上,从 1 分钟开始调整
Do we need to consider retry_delay as well while specifying SLA?
按照docs,我会说是
:param sla: time by which the job is expected to succeed. Note that
this represents the ``timedelta`` after the period is closed. For
example if you set an SLA of 1 hour, the scheduler would send an email
soon after 1:00AM on the ``2016-01-02`` if the ``2016-01-01`` instance
has not succeeded yet.