#debugging #testing #airflow
#отладка #тестирование #воздушный поток
Вопрос:
Я ищу лучший способ запуска / отладки задач и dag в моей IDE. Я вижу, что есть два способа сделать это. Я могу запустить команду в режиме отладки для конкретной базы данных и, при необходимости, задачи. airflow test
Другой способ — использовать DebugExecutor
и запускать определенный dag. Я вижу, что оба способа требуют, чтобы база данных воздушного потока была запущена и запущена, и что все пулы настроены (возможно, также очереди). Мои вопросы:
- В чем основное различие между этими двумя?
airflow test
Использует лиDebugExecutor
под капотом?- Есть ли способ запускать / отлаживать базы данных и задачи без запуска базы данных воздушного потока и создания зависимых пулов и очередей?
Ответ №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. Отлично, спасибо! Итак, этот способ выполнения задач похож на то, что мы использовали бы для модульных тестов.