Airflow - это ПО для ETL процессов. В нём можно делать сложные цепочки из разных задач, которые выполняются последовательно при определённых условиях. Этот инструмент часто используется инженерами по данным для автоматизации процессов внутри хранилищ данных.
# Примеры цепочек выполнения задач в зависимости от условий
# Установка:
python3 -m venv virt
pip install apache-airflow
# Указываем рабочую папку:
export AIRFLOW_HOME=/home/user/airflow
# добавляем библиотеку для соединения с MySQL в Connections (надо перезагружать веб сервер после этого):
pip install apache-airflow-providers-mysql
# Перед запуском заходим в конфиг файл "airflow/airflow.cfg". Там можно отключить демонстративные даги, указав:
load_examples = False
# В этом же файле в самом верху есть директива "dags_folder", которая указывает на папку с дагами. Надо скопировать путь и создать папку
mkdir /home/user/airflow/dags
# Запускаем (без запуска scheduler в списке дагов airflow будет пусто):
airflow db init
airflow webserver -p 8080
airflow scheduler -D
# с ключом "-D" всё запускается в фоновом режиме
# чтобы завершить процессы сервера и планировщика, необходимо будет найти в папке "airflow" PID файлы, в которых указаны номера процессов. И по ним завершать процессы. При этом Airflow не запустится заново до тех пор, пока pid файлы не будут удалены из папки. Обычно делают так:
cat airflow/*.pid | xargs kill
rm airflow/*.pid
# проверяем есть ли ошибки в работе:
airflow db check
# Создаём пользователя:
airflow users create --role Admin --username admin --email admin --firstname admin --lastname admin --password admin
# удаляем пользователя
airflow users delete -u admin
# проверяем даги, которые есть:
airflow dags list
# даги с ошибками
airflow dags list-import-errors
# удаляет все настройки базы
airflow db reset
# Для создания своих дагов надо сделать папку внутри домашней директории программы:
mkdir /home/user/airflow/dags
# В Airflow мжно создавать глобальные переменные. Делается это через интерфейс админа закладка "Admin"->"Variables". При этом если указать в названии переменной суффикс "_SECRET" или "_PASSWORD", то значение переменной нельзя будет увидеть в веб интерфейсе. Но изнутри дагов можно обращаться к этим полям и получать значение.