Exception 气流中通过异常
我是Apache Airflow的新手,我计划使用BashOperator类运行Python和R脚本文件。我想了解异常在两种情况下应该如何工作:Exception 气流中通过异常,exception,airflow,Exception,Airflow,我是Apache Airflow的新手,我计划使用BashOperator类运行Python和R脚本文件。我想了解异常在两种情况下应该如何工作: 1.R或Python脚本由于某种原因失败;或 2.R或Python脚本已完成,但我希望在DAG继续执行下一个任务之前需要人工输入 我有两个非常基本的问题: 1.如何将异常从R或Python脚本文件传递到bash操作符和DAG?例如,对R脚本文件的调用是否应该位于BashOperator中的try块内? 2.如何传递自定义异常(警告?错误?),以便即使R
1.R或Python脚本由于某种原因失败;或
2.R或Python脚本已完成,但我希望在DAG继续执行下一个任务之前需要人工输入 我有两个非常基本的问题:
1.如何将异常从R或Python脚本文件传递到bash操作符和DAG?例如,对R脚本文件的调用是否应该位于BashOperator中的try块内?
2.如何传递自定义异常(警告?错误?),以便即使R或Python脚本成功完成,也可以暂停DAG的执行
如果您能告诉我气流异常处理的例子,我将不胜感激。请忘记您正在使用任何气流操作器 只需假设您正在编写一个运行R或Python脚本的Bash脚本 案例1:Python脚本失败时失败的Bash脚本:
set -e
python test_file.py
python test_file.py || exit 0
案例2:即使Python脚本失败也会通过的Bash脚本:
set -e
python test_file.py
python test_file.py || exit 0
现在只需在BashOperator中传递上面的一个bash脚本
基本上,
Bash操作符
只运行正常的Bash命令/脚本,并传递脚本的日志和退出状态。在案例1中,您的气流任务也将失败,而在案例2中,气流任务将失败。太棒了,谢谢。因此,如果命令失败,“set-e”将退出,如果脚本的退出状态为非零,“exit 0”也将通过。您写道bash操作符“传递日志并退出状态”——如何访问DAG中的日志?在案例2中,“0”是唯一传递的信息吗?或者我如何传递一个警告,比如“继续之前检查结果?”bash操作符将记录整个stdout。如果传递xcom\u push=True
,则在bash命令完成时,写入stdout的最后一行也将被推送到xcom。这可以在下一个下游任务中使用Xcom Pull访问。例子: