在气流中传递异常

时间:2019-06-03 15:48:57

标签: exception airflow

我是Apache Airflow的新手,我计划使用BashOperator类运行Python和R脚本文件。我想了解异常在两种情况下应该如何工作:
1. R或Python脚本由于某种原因而失败;或
2. R或Python脚本已完成,但我想在DAG进行下一个任务之前需要人工输入。

我有两个非常基本的问题:
1.异常如何从R或Python脚本文件传递到BashOperator并传递给DAG?例如,对R脚本文件的调用是否应该在BashOperator的try块内?
2.如何传递自定义异常(警告?错误?),以便即使R或Python脚本成功完成,也可以暂停DAG的执行?

对于您可以向我指出的有关气流异常处理的任何示例,我将不胜感激。

1 个答案:

答案 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任务会失败。