我是Apache Airflow的新手,我计划使用BashOperator类运行Python和R脚本文件。我想了解异常在两种情况下应该如何工作:
1. R或Python脚本由于某种原因而失败;或
2. R或Python脚本已完成,但我想在DAG进行下一个任务之前需要人工输入。
我有两个非常基本的问题:
1.异常如何从R或Python脚本文件传递到BashOperator并传递给DAG?例如,对R脚本文件的调用是否应该在BashOperator的try块内?
2.如何传递自定义异常(警告?错误?),以便即使R或Python脚本成功完成,也可以暂停DAG的执行?
对于您可以向我指出的有关气流异常处理的任何示例,我将不胜感激。
答案 0 :(得分:1)
忘记您正在使用任何Airflow操作员。
只需说您正在编写运行R或Python脚本的Bash脚本。
案例1 :如果Python脚本失败,Bash脚本将失败:
set -e
python test_file.py
情况2 :即使Python脚本失败,Bash脚本也会通过:
python test_file.py || exit 0
现在只需在BashOperator中传递以上bash脚本之一。
基本上,BashOperator
仅运行常规的Bash命令/脚本并传递日志和脚本的退出状态。在第一种情况下,您的Airflow任务也会失败,在第二种情况下,Airflow任务会失败。