Sensores do Airflow

Introdução ao Apache Airflow em Python

Mike Metzger

Data Engineer

Sensores

  • Um operador que espera uma condição ficar verdadeira
    • Criação de um arquivo
    • Upload de um registro no banco
    • Resposta de uma requisição web
  • Dá pra definir com que frequência checar a condição
  • Atribuído a tasks

Ilustração de um sensor do Airflow esperando uma condição ficar verdadeira

Introdução ao Apache Airflow em Python

Detalhes do sensor

  • Derivado de airflow.sdk.BaseSensorOperator
  • Argumentos do sensor:
  • mode - Como checar a condição
    • mode='poke' - Padrão, roda repetidamente
    • mode='reschedule' - Libera o slot e tenta de novo depois
  • poke_interval - Intervalo entre checagens
  • timeout - Tempo máximo antes de falhar a task
  • Também inclui atributos normais de operador
Introdução ao Apache Airflow em Python

Sensor de arquivo

  • Faz parte da lib airflow.providers.standard.sensors
  • Checa se existe um arquivo em um local
  • Também pode checar se há arquivos em um diretório
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()
Introdução ao Apache Airflow em Python

Outros sensores

  • Muitos outros em airflow.providers.*.sensors
  • ExternalTaskSensor - espera uma task em outro DAG terminar
  • HttpSensor - Faz uma requisição web e checa conteúdo
  • SqlSensor - Roda uma query SQL para checar conteúdo
Introdução ao Apache Airflow em Python

Quando usar sensores?

  • Quando não se sabe quando a condição será verdadeira
  • Se falhar imediatamente não é desejado
  • Adiciona repetição à task sem loops

 

 

Ilustração de um sensor do Airflow esperando uma condição ficar verdadeira

Introdução ao Apache Airflow em Python

Vamos praticar!

Introdução ao Apache Airflow em Python

Preparing Video For Download...