#redis #celery #airflow
#redis #сельдерей #воздушный поток
Вопрос:
Мне нужно создать базу данных, которая выглядит следующим образом-
задача 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. Это не решает проблему. Это просто «обход». Кроме того, для работы с несколькими очередями очереди должны быть явно указаны в задаче