Отладка задач воздушного потока с использованием теста воздушного потока против использования DebugExecutor

#debugging #testing #airflow

#отладка #тестирование #воздушный поток

Вопрос:

Я ищу лучший способ запуска / отладки задач и dag в моей IDE. Я вижу, что есть два способа сделать это. Я могу запустить команду в режиме отладки для конкретной базы данных и, при необходимости, задачи. airflow test Другой способ — использовать DebugExecutor и запускать определенный dag. Я вижу, что оба способа требуют, чтобы база данных воздушного потока была запущена и запущена, и что все пулы настроены (возможно, также очереди). Мои вопросы:

  1. В чем основное различие между этими двумя?
  2. airflow test Использует ли DebugExecutor под капотом?
  3. Есть ли способ запускать / отлаживать базы данных и задачи без запуска базы данных воздушного потока и создания зависимых пулов и очередей?

Ответ №1:

В чем основное различие между этими двумя?

Debug Executor выполняет полный запуск DAG, чтобы вы могли протестировать правила запуска. airflow test команда запускает только одну задачу.

Это еще понятнее в Airflow 2.0. У нас есть отдельные команды:

  • airflow dags test — запускает один запуск базы данных. DebugExecutor
  • airflow tasks test — запускает одну задачу.

Использует ли тест воздушного DebugExecutor потока под капотом?

Нет. Если вы используете DebugExecutor , вам нужно запустить полный планировщик. Если вы используете airflow task команду, выполняется только код, который выполняется worker.

Есть ли способ запускать / отлаживать базы данных и задачи без запуска базы данных воздушного потока и создания зависимых пулов и очередей?

Вы можете загрузить DAG с DagBag помощью, а затем вызвать метод выполнения вашей задачи.

 from airflow.model.dagbag import DagBag
dag_file_path = "/home/test-user/dags/dag-file.py"
dagbag = DagBag(dag_folder=dag_file_path)
dagbag.dags['test-dag-id'].task_dict['task-id'].execute({})
 

Комментарии:

1. Отлично, спасибо! Итак, этот способ выполнения задач похож на то, что мы использовали бы для модульных тестов.