#airflow #airflow-scheduler
Вопрос:
Я новичок в airflow, я хочу звонить на внешний сервер лицензирования каждый раз, когда запуск DAG успешно завершен.
Комментарии:
1. не могли бы вы предоставить дополнительную информацию в своем вопросе? Что вы подразумеваете под «звонком» — вы спрашиваете о выполнении HTTP-запроса к другой службе? Можете ли вы поделиться примерами своего кода, тем, что вы пробовали и т.д.
2. Да, это HTTP-запрос к другой службе. Сервер вернет информацию о лицензировании и все такое . Я не мог найти никаких ресурсов в Интернете для того же самого. Спасибо
3. Пожалуйста, предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.
Ответ №1:
В Airflow нет события «успешное завершение». Вы можете добавить кластерные политики — https://airflow.apache.org/docs/apache-airflow/stable/concepts/cluster-policies.html для событий «перед началом» (для групп поддержки и задач.
Я думаю, что единственный способ убедиться, что это работает, — это установить задачу в качестве «последнего» шага в вашей DAG (когда все остальные завершатся успешно) с набором «on_success_callback».
Возможно, будет невозможно добавить такую задачу автоматически, если вы этого захотите.
Вы могли бы попытаться использовать для этого «Мутацию экземпляра задачи», но я думаю, что вы не можете изменить обратные вызовы, и вам нужно будет знать, какую задачу вам нужно каким-то образом мутировать.
Одна вещь, которую вы МОГЛИ бы сделать, если хотите каким-то образом «принудить» существование такой задачи и обратного вызова, вы могли бы добавить «Кластерную политику», которая могла бы прочитать вашу DAG и проверить, существует ли такая задача (и не позволяйте DAG запускаться без нее). Но, по-моему, это довольно сложно.