Bird
Raised Fist0
Apache Airflowdevops~5 mins

SLA misses and notifications in Apache Airflow - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is an SLA in Apache Airflow?
SLA stands for Service Level Agreement. In Airflow, it is a time limit set on tasks to finish by a certain deadline.
Click to reveal answer
beginner
What happens when a task misses its SLA in Airflow?
Airflow records the SLA miss and can trigger notifications to alert users about the delay.
Click to reveal answer
intermediate
How do you enable SLA notifications in Airflow?
You set the 'sla_miss_callback' function in your DAG to define what happens when an SLA is missed, like sending an email.
Click to reveal answer
beginner
What is the role of 'sla' parameter in Airflow tasks?
The 'sla' parameter sets a deadline (a datetime.timedelta) for the task to complete. If the task runs longer, it triggers an SLA miss.
Click to reveal answer
intermediate
Can SLA misses trigger automatic retries in Airflow?
No, SLA misses only notify about delays. Retries are controlled separately by the 'retries' and 'retry_delay' parameters.
Click to reveal answer
What does SLA stand for in Airflow?
AScheduled Log Action
BSystem Log Alert
CService Level Agreement
DService Load Average
Which Airflow parameter sets the deadline for a task?
Aexecution_timeout
Bretry_delay
Cstart_date
Dsla
What happens when a task misses its SLA?
AAirflow triggers an SLA miss notification
BThe task automatically retries
CThe DAG stops running
DNothing happens
How do you customize SLA miss notifications?
ABy setting 'sla_miss_callback' in the DAG
BBy changing 'retry_delay'
CBy modifying 'start_date'
DBy setting 'max_active_runs'
Do SLA misses cause task retries automatically?
AYes, always
BNo, retries are separate from SLA misses
COnly if 'sla_retry' is true
DOnly for PythonOperator tasks
Explain how SLA misses work in Airflow and how you can notify users when they happen.
Think about deadlines on tasks and what happens if they are late.
You got /4 concepts.
    Describe the difference between SLA misses and task retries in Airflow.
    Consider what each feature is meant to do.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does setting an sla parameter on an Airflow task do?
      easy
      A. It defines a time limit; if the task runs longer, it triggers an SLA miss.
      B. It sets the maximum retries for the task.
      C. It schedules the task to run at a specific time.
      D. It disables the task from running automatically.

      Solution

      1. Step 1: Understand the purpose of sla in Airflow tasks

        The sla parameter sets a time limit for task execution.
      2. Step 2: Identify what happens when the limit is exceeded

        If the task runs longer than the sla time, Airflow marks it as an SLA miss.
      3. Final Answer:

        It defines a time limit; if the task runs longer, it triggers an SLA miss. -> Option A
      4. Quick Check:

        sla sets time limit = C [OK]
      Hint: Remember SLA means max allowed time for task [OK]
      Common Mistakes:
      • Confusing SLA with retry count
      • Thinking SLA schedules task start time
      • Assuming SLA disables tasks
      2. Which of the following is the correct way to define an SLA of 30 minutes on a task in Airflow?
      easy
      A. sla='30 minutes'
      B. sla=30
      C. sla=timedelta(minutes=30)
      D. sla='00:30:00'

      Solution

      1. Step 1: Recall the correct data type for sla

        The sla parameter expects a datetime.timedelta object.
      2. Step 2: Identify the correct syntax for 30 minutes timedelta

        timedelta(minutes=30) correctly creates a 30-minute duration.
      3. Final Answer:

        sla=timedelta(minutes=30) -> Option C
      4. Quick Check:

        sla uses timedelta object = B [OK]
      Hint: Use timedelta for time durations in Airflow [OK]
      Common Mistakes:
      • Using string instead of timedelta
      • Passing integer without timedelta
      • Using incorrect string format
      3. Given this DAG snippet, what will happen if task1 runs longer than 10 minutes?
      from datetime import timedelta
      from airflow import DAG
      from airflow.operators.dummy import DummyOperator
      from airflow.utils.dates import days_ago
      
      def sla_miss_callback(dag, task_list, blocking_task_list, slas, session=None):
          print('SLA missed!')
      
      dag = DAG('sla_example', start_date=days_ago(1))
      
      task1 = DummyOperator(
          task_id='task1',
          dag=dag,
          sla=timedelta(minutes=10)
      )
      
      dag.sla_miss_callback = sla_miss_callback
      medium
      A. The sla_miss_callback function will print 'SLA missed!' when the SLA is missed.
      B. Nothing happens because DummyOperator ignores SLA.
      C. The task will automatically retry until it finishes within 10 minutes.
      D. Airflow will fail the DAG immediately.

      Solution

      1. Step 1: Understand SLA miss callback usage

        The DAG-level sla_miss_callback is called when any task misses its SLA.
      2. Step 2: Identify what the callback does

        The callback prints 'SLA missed!' when triggered by a task exceeding its SLA.
      3. Final Answer:

        The sla_miss_callback function will print 'SLA missed!' when the SLA is missed. -> Option A
      4. Quick Check:

        SLA miss triggers callback print = A [OK]
      Hint: SLA miss triggers callback, not retries or failure [OK]
      Common Mistakes:
      • Thinking SLA causes retries automatically
      • Assuming DummyOperator ignores SLA
      • Believing DAG fails immediately on SLA miss
      4. You wrote this code to notify on SLA misses but no notification happens:
      def notify_sla_miss(dag, task_list, blocking_task_list, slas, session=None):
          send_email('admin@example.com', 'SLA Missed')
      
      dag = DAG('sla_notify', start_date=days_ago(1), sla_miss_callback=notify_sla_miss)
      
      task = DummyOperator(task_id='task', dag=dag, sla=timedelta(minutes=5))

      What is the likely reason notifications are not sent?
      medium
      A. DummyOperator does not support SLA misses.
      B. SLA miss callback must be set on the task, not the DAG.
      C. The SLA time must be set in seconds, not minutes.
      D. The send_email function is not defined or imported.

      Solution

      1. Step 1: Check the callback function implementation

        The callback calls send_email but no import or definition is shown.
      2. Step 2: Understand Airflow's email sending

        Airflow requires proper email function or operator; undefined send_email causes failure silently.
      3. Final Answer:

        The send_email function is not defined or imported. -> Option D
      4. Quick Check:

        Undefined email function blocks notification = D [OK]
      Hint: Ensure email functions are imported or use Airflow email operators [OK]
      Common Mistakes:
      • Setting callback on DAG instead of task (both valid but DAG preferred)
      • Wrong SLA time units
      • Assuming DummyOperator ignores SLA
      5. You want to send a custom Slack message when any task misses its SLA in your DAG. Which approach correctly implements this?
      hard
      A. Set sla on tasks and add a SlackOperator as a downstream task to notify SLA misses.
      B. Define a sla_miss_callback function that uses Slack API and assign it to the DAG's sla_miss_callback parameter.
      C. Use on_failure_callback on tasks to send Slack messages when SLA is missed.
      D. Configure Airflow to send Slack notifications by setting sla to the Slack channel name.

      Solution

      1. Step 1: Understand how SLA miss notifications work

        SLA misses trigger the sla_miss_callback function assigned to the DAG or task.
      2. Step 2: Identify correct way to send Slack message on SLA miss

        Implement a callback function that calls Slack API and assign it to DAG's sla_miss_callback.
      3. Final Answer:

        Define a sla_miss_callback function that uses Slack API and assign it to the DAG's sla_miss_callback parameter. -> Option B
      4. Quick Check:

        SLA miss callback with Slack API = A [OK]
      Hint: Use sla_miss_callback with Slack API for notifications [OK]
      Common Mistakes:
      • Using on_failure_callback instead of sla_miss_callback
      • Trying to notify via downstream tasks
      • Misconfiguring sla parameter as Slack channel
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard