Поток воздуха занимает больше времени для планирования задач

#taskscheduler #airflow

Вопрос:

Я использую версию 2.1.3 airflow. Мой вариант использования-планировать задачи одну за другой, и для управления этими задачами мне требуется оркестратор. Я ввожу данные в DAG airflow, используя функцию API REST для воздушного потока. Мой вариант использования требует ответа в режиме реального времени (вызов внешнего API), а также пакетная обработка должна выполняться ежедневно (вызов REST API через одну группу поддержки для запуска другой группы поддержки) Для пакетной обработки время не является ограничением, поскольку это не имеет значения, даже если требуется больше времени. Но для реального времени имеет значение время выполнения, которое является медленным (около 6 секунд для простого кода на Python).

Я разделил DAG воздушного потока на 4 задачи. Планирование между задачами выполняется очень медленно. Индивидуальное время выполнения задач выполняется быстро. Поэтому я написал весь код в одном монолитном блоке, что значительно сокращает время до 1 секунды. Но это не позволяет мне в полной мере использовать преимущества воздушного потока.

Я хочу знать — «Как я могу сократить все время выполнения DAG, разделив его на задачи». Параметры конфигурации, которые я использую, следующие —

ВОЗДУШНЫЙ ПОТОК__ЯДРО__ИСПОЛНИТЕЛЬ: LocalExecutor ВОЗДУШНЫЙ ПОТОК__ЯДРО__SQL_АЛХИМИЯ_СОЕДИНЕНИЕ: postgresql psycopg2://airflow:airflow@postgres/airflow ВОЗДУШНЫЙ ПОТОК__ЯДРО__ФЕРНЕТ_КЛЮЧ: «ВОЗДУШНЫЙ ПОТОК__ПЛАНИРОВЩИК__МАКС_ПОТОКОВ: 4 ВОЗДУШНЫЙ ПОТОК__ПЛАНИРОВЩИК__ПЛАНИРОВЩИК_СЕРДЦЕБИЕНИЕ_СЕК: 1 ПОТОК__ВЕДЕНИЕ ЖУРНАЛА__ВЕДЕНИЕ ЖУРНАЛА_УРОВЕНЬ: ОТЛАДКА ПОТОКА__ПЛАНИРОВЩИК__МИН_ФАЙЛ_ПРОЦЕСС_ИНТЕРВАЛ: 60 ПОТОК__ПЛАНИРОВЩИК__DAG_СПИСОК_СПИСОК _ ИНТЕРВАЛ: 60 ПОТОК__ОПЕРАТОРЫ__ПО УМОЛЧАНИЮ_ПРОЦЕССОРЫ: 2 ВОЗДУШНЫЙ ПОТОК__ЯДРО__DAG_ _ ПРИОСТАНОВЛЕНЫ_ПРИ_СОЗДАНИИ: «истинный» ВОЗДУШНЫЙ ПОТОК__ЯДРО__ЗАГРУЗКА_ПРИМЕРЫ: «ложь»

Тем больше времени уходит из-за —

  1. Импорт DAG для выполнения каждой задачи занимает около 400 мс. Таким образом, для эффективного выполнения 4 задач потребуется 1,6 секунды
  2. Выполнение задачи обратного вызова для каждой задачи занимает около 300 мс. Таким образом, для 4 задач это займет 1,2 секунды.
  3. Проверка зависимостей, которая занимает около 200 мс, которая проверяется 2 раза. Таким образом, для 4 задач это займет 1,6 секунды
  4. Загрузка задачи в параметрах конфигурации занимает около 150 мс для каждой задачи

Есть ли какое-либо другое программное обеспечение, которое подошло бы для моего варианта использования? Спасибо!

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

1. Пожалуйста, отредактируйте вопрос, чтобы ограничить его конкретной проблемой с достаточной детализацией для определения адекватного ответа.