Идеальный способ достичь этого - использовать именованные очереди.Настройте несколько рабочих, некоторые из которых работают в среде Production-East
, а некоторые - в среде Production-West
.Таким образом, обе группы обеспечения доступности баз данных отображаются в пользовательском интерфейсе, но выполняются только на рабочих машинах, на которых установлена эта конкретная среда.
Из документации для очередей :
Когдаиспользуя CeleryExecutor, можно указать очереди сельдерея, в которые отправляются задачи.Очередь является атрибутом BaseOperator, поэтому любая задача может быть назначена любой очереди.Очередь по умолчанию для среды определена в airflow.cfg
celery -> default_queue
.Это определяет очередь, которой назначаются задачи, если она не указана, а также очередь, которую слушатели Airflow слушают при запуске.
Рабочие могут прослушивать одну или несколько очередей задач.Когда рабочий запускается (с помощью команды airflow worker
), можно указать набор имен очередей, разделенных запятыми (например, airflow worker -q spark
).Затем этот работник будет выбирать только задачи, связанные с указанными очередями.
Это может быть полезно, если вам нужны специализированные работники, либо с точки зрения ресурсов (например, для очень легких задач, когда один работник может занять тысячизадач без проблем) или с точки зрения среды (вы хотите, чтобы работник работал из самого кластера Spark, потому что ему нужна очень специфическая среда и права безопасности).