#web-applications #airflow #airflow-scheduler #data-processing
#веб-приложения #воздушный поток #airflow-планировщик #обработка данных
Вопрос:
Я хочу предоставить интерфейсный пользовательский интерфейс для принятия некоторых входных параметров от пользователей для конвейера данных в серверной части, а затем снова отобразить вывод пользователю во внешнем пользовательском интерфейсе. Я могу использовать конвейер данных в качестве базы данных Airflow, которая запускается по требованию всякий раз, когда пользователь отправляет входные параметры. По сути, я хочу использовать Airflow в качестве серверной части для веб-приложения. Могу ли я иметь постоянно работающий DAG, который обслуживает веб-страницу для пользователя, и всякий раз, когда они отправляют входные параметры, выполняется конвейер данных и отображается результат?
Я нашел близкий пример — https://towardsdatascience.com/10-minutes-to-building-a-machine-learning-pipeline-with-apache-airflow-53cd09268977 но я не уверен, обслуживает ли он веб-страницу непрерывно или только при запуске DAG, а затем останавливается, когда DAG завершается.
Ответ №1:
Наиболее распространенным решением в проектах, над которыми я работал, было создание объектов Flask App или Flask App Builder через папку плагинов в настройках.
Вторая ссылка должна привести вас к хорошему примеру.
Отсюда вы можете заставить приложение Flask по существу вызывать модели воздушного потока или взаимодействовать с внутренней базой данных, используя концепцию сеанса из airflow/utils/db.py .
Удачи!
Ответ №2:
Один из способов заключается в том, что вы можете предоставить API для взаимодействия с Airflow, написав пользовательский плагин, как упоминалось в предыдущем ответе.
Другой способ, о котором я мог подумать, — использовать интерфейс командной строки Airflow. В основном заставляя ваш пользовательский интерфейс выполнять команды Airflow удаленно. К счастью, есть плагин, который уже делает это. Плагин Airflow REST API предоставляет интерфейс командной строки Airflow в качестве REST API. Я не пробовал это лично. Но я исследовал его, когда нам нужен был API для какой-то операции. Судя по документации, он стабилен и хорошо поддерживается.
Комментарии:
1. Неплохо. Кажется полезным. Поддерживает ли он также передачу пользовательских аргументов или параметров в DAG? Это основная цель пользовательского интерфейса — иметь возможность передавать пользовательские конфигурации для запуска DAG.
2. Я не пробовал. Однако, судя по документам, в нем есть то, что вы просите https://github.com/teamclairvoyant/airflow-rest-api-plugin#trigger_dag