Сенсоры Airflow

Введение в Apache Airflow на Python

Mike Metzger

Data Engineer

Сенсоры

  • Оператор, ожидающий выполнения определённого условия
    • Создание файла
    • Загрузка записи в базу данных
    • Ответ на веб-запрос
  • Можно задать частоту проверки условия
  • Назначаются задачам

Иллюстрация сенсора Airflow, ожидающего выполнения условия

Введение в Apache Airflow на Python

Параметры сенсора

  • Наследуется от airflow.sdk.BaseSensorOperator
  • Аргументы сенсора:
  • mode — способ проверки условия
    • mode='poke' — режим по умолчанию, повторные проверки
    • mode='reschedule' — освободить слот задачи и повторить позже
  • poke_interval — интервал между проверками
  • timeout — время ожидания до признания задачи неудачной
  • Также поддерживает стандартные атрибуты операторов
Введение в Apache Airflow на Python

Файловый сенсор

  • Входит в библиотеку airflow.providers.standard.sensors
  • Проверяет наличие файла по указанному пути
  • Может проверять наличие любых файлов в директории
from airflow.providers.standard.sensors.filesystem import FileSensor

file_sensor_task = FileSensor(task_id='file_sense',
                              filepath='salesdata.csv',
                              poke_interval=300,
                              timeout=3000
                              )

init_sales_cleanup() >> file_sensor_task >> generate_report()
Введение в Apache Airflow на Python

Другие сенсоры

  • Другие сенсоры доступны в airflow.providers.*.sensors
  • ExternalTaskSensor — ожидает завершения задачи в другом DAG
  • HttpSensor — выполняет запрос к URL и проверяет содержимое ответа
  • SqlSensor — выполняет SQL-запрос и проверяет содержимое результата
Введение в Apache Airflow на Python

Когда использовать сенсоры?

  • Время выполнения условия неизвестно заранее
  • Немедленный сбой нежелателен
  • Нужно повторение задачи без использования циклов

 

 

Иллюстрация сенсора Airflow, ожидающего выполнения условия

Введение в Apache Airflow на Python

Давайте потренируемся!

Введение в Apache Airflow на Python

Preparing Video For Download...