Apache Airflow |Как проверить ответ от команды при использовании SSHOperator? - PullRequest
0 голосов
/ 10 апреля 2019

Как проверить ответ от команды при использовании SSHOperator?

t1  = SSHOperator(ssh_conn_id='conn_box2',
                 task_id='t1',
                 command='Rscript /code/demo.R',
                 do_xcom_push=True,
                 response_check=lambda response: True if "status:200" in response.text else False,
                 dag=dag
)

Мои сценарии R возвращают статус: 200, если выполнение идет хорошо.И я хочу отслеживать это.Моя задача t1 должна завершиться только в том случае, если статус равен 200. Если скрипт R возвращает статус: 300 - это сбой.Но так как выполнение завершено без каких-либо ошибок в пользовательском интерфейсе, задача становится зеленой (чего я не хочу)

I код выше может перехватить ответ в xcom, но как мне его проверить?

1 Ответ

0 голосов
/ 10 апреля 2019

Попробуйте следующий код:

bash_command = """
set -e;
Rscript /code/demo.R  | grep 'status:200'  &> /dev/null 
if [ $? == 0 ]; then
   echo "Task Successful"
else
   echo "Task Failed"
   exit 1
fi
"""


t1  = SSHOperator(ssh_conn_id='conn_box2',
                 task_id='t1',
                 command=bash_command,
                 dag=dag)

В качестве альтернативы вы также можете использовать следующее bash_command:

if Rscript /code/demo.R | grep -q 'status:200'; then
  echo "Task Successful"
else
  echo "Task Failed"
  exit 1
fi

SSHOperator не имеет параметра response_check.

...