气流:如何强制失败 bash 运算符

Airflow: how to force fail bash operator

我是 运行 一系列 python 脚本(例如:script1.py、script2.py)在一个脚本(例如:do_stuff.sh)中我 运行 使用气流 BashOperator。我想知道如果不满足特定条件,是否有一种方法可以使 python 脚本中的 BashOperator 失败?我不需要脚本本身就 BashOperator 失败,所以我可以触发 clean_up 任务。

script1.py:

def main(x)
    if x == 0:
        raise ValueError('BashOperator FAILS')
    else:
        print x
if __name__ == '__main__':
    import plac
    plac.call(main)

抱歉,如果我的问题很基础,我在 airflow/scripting 还是个新手。

感谢您的帮助!

在您的 bash 命令中,您应该能够做到:

exit 123

在这种情况下,您将退出并返回错误代码 123,但您可以使用任何您想要的错误代码。

编辑:

在 python 中,按照您所说的方式抛出异常也会使任务失败:

raise ValueError('This will exit bash with an error.')