在使用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脚本将返回status:200。我想跟踪它。我的任务t1应该仅在状态为200时完成。 如果R脚本返回status:300,则表示失败。但是由于执行已完成且UI任务中没有任何错误,因此变成了绿色(我不想要)
我上面的代码能够捕获xcom中的响应,但是我如何验证它?
答案 0 :(得分:0)
尝试以下代码:
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
参数。