Airflow API - вывод DAG-прогона доступен через API
Я запускаю DAG через API, как показано ниже, чтобы выполнить скрипт python для запуска команды.
curl -X POST -H "Cache-Control: no-cache" -H "Content-Type: application/json" http://localhost:8080/api/experimental/dags/DAG-3/dag_runs -d '{"conf":"{\"hostname\":\"<servername>\",\"username\":\"test\", \"password\":\"<password>\", \"command1\":\"uname -a\" }"}'
Я получаю ответ, как показано ниже, когда выполняется завиток
{"execution_date":"2020-07-17T18:26:58+00:00","message":"Created <DagRun DAG-3 @ 2020-07-17 18:26:58+00:00: manual__2020-07-17T18:26:58+00:00, externally triggered: True>"}
Я вижу успешно выполненный сценарий в журналах DAG,
[2020-07-17 18:25:03,982] {bash_operator.py:122} INFO - Output:
[2020-07-17 18:25:04,303] {bash_operator.py:126} INFO - Linux servername 3.10.0-693.21.1.el7.x86_64 #1 SMP Fri Feb 23 18:54:16 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[2020-07-17 18:25:04,321] {bash_operator.py:130} INFO - Command exited with return code 0
Но мне нужно, чтобы этот вывод был возвращен в виде ответа JSON. Как я могу этого добиться. Спасибо
1 ответ
API Airflow асинхронен в том смысле, что ваш curl
просто запускает DAG-прогон - он не дожидается его завершения (потому что у нас нет возможности узнать, сколько времени это займет, это могут быть дни или недели).
API Airflow все еще находится в стадии разработки, и, как ни странно, нет способа получить из него журналы запуска DAG.