Как добавить SLA к заданиям ETL, работающим в Airflow?

Я новичок в Apache Airflow. У меня уже есть несколько DAG, работающих в Airflow. Теперь я хочу добавить к нему SLA, чтобы я мог отслеживать и контролировать задачи и получать оповещения, если что-то сломается.

Я знаю, как добавить SLA в DAG default_args, используя timedelta(), как показано ниже.

default_args = {
    'owner': 'airflow',
    'depends_on_past': False,
    'start_date': datetime(2015, 6, 1),
    'email': ['[email protected]'],
    'email_on_failure': False,
    'email_on_retry': False,
    'retries': 1,
    'retry_delay': timedelta(minutes=5),
    'sla': timedelta(minutes=30)
}

Но у меня есть следующие вопросы:

  1. Мы можем указать SLA для всей DAG или только для задач по отдельности?

  2. Какое время SLA подходит для группы обеспечения доступности баз данных, работающей в течение 30 минут?

  3. Какое время SLA будет подходящим для задачи, которая выполняется в течение 5 минут?

  4. Нужно ли нам также учитывать retry_delay при указании SLA?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
1 500
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

We can specify SLA for whole DAG or only for tasks individually?

Я считаю, что соглашения об уровне обслуживания предоставляются только для для индивидуальных задач и не для ДАГ в целом. Но я думаю, что такой же эффект достижим (хотя и не могу сказать наверняка) для всей DAG, создав задачу в конце (DummyOperator), которая зависит от всех других задач вашей DAG, и установив SLA для этой закрывающей задачи.


What would be appropriate SLA time for the DAG that is running for 30 minutes?

Это будет полностью зависеть от таких факторов, как критичность вашей задачи, частота ее отказов и т. д. Но я бы посоветовал вам начать с «достаточно строгой» временной дельты (например, 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?

Судя по документы, я бы сказал да

: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.

Другие вопросы по теме