Выполнение нескольких задач одной группы баз данных на отдельных машинах в Airflow

#redis #celery #airflow

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

Вопрос:

Мне нужно создать базу данных, которая выглядит следующим образом-

снимок базы данных airflow

задача print_date должна выполняться с сервера A, а задача с шаблоном должна выполняться с сервера B. Из документации ясно, что потребуется celery с Redis или RabbitMQ. Я использую celery вместе с Redis (puckel / docker-airflow). У меня уже есть airflow, запущенный на сервере B с помощью celery executer.
Нужно ли мне иметь такую же настройку и на сервере A?? Кроме того, как я соединю эти две задачи в одной базе данных, которые на самом деле присутствуют на разных серверах? Пример фреймворка для такого варианта использования будет высоко оценен.

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

1. Нужно ли нам иметь Redis на обеих машинах

Ответ №1:

Используйте очереди Airflow. И когда вы определяете свою задачу, добавьте queue параметр и назначьте его определенной очереди.

Например, queue1 просто выполнит все задачи на машине 1, а queue2 выполнит все задачи на машине 2.

Таким образом, вы можете назначить свою задачу A в очередь 1, следовательно, она будет выполняться на машине 1 и назначать

задача B в очередь 2, следовательно, она будет выполняться на машине 2

Проверьте документацию на https://airflow.apache.org/concepts.html#queues

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

1. итак, я запустил базу данных с обеих машин??

2. Это не решает проблему. Это просто «обход». Кроме того, для работы с несколькими очередями очереди должны быть явно указаны в задаче