gpt4 book ai didi

python - 强制 Airflow 以退出代码 1 终止

转载 作者:太空宇宙 更新时间:2023-11-03 11:13:24 27 4
gpt4 key购买 nike

我在 Airflow 中运行的一些任务偶尔会因各种原因失败。有些是我抓到的,有些是新的,也不异常(exception)。我想获取退出代码 1 以便接收此类失败的通知。

下面是一个我没有排除的错误示例,有没有办法让 ValueError 产生退出代码 1?

[2019-06-13 12:56:13,630] {bash_operator.py:127} INFO - ValueError: year 43631 is out of range
[2019-06-13 12:56:13,870] {bash_operator.py:127} INFO - 2019-06-13 12:56:13,869 - ODL - INFO - Closing db connection
[2019-06-13 12:56:13,870] {bash_operator.py:127} INFO - 2019-06-13 12:56:13,870 - ODL - INFO - End
[2019-06-13 12:56:13,990] {bash_operator.py:131} INFO - Command exited with return code 0
[2019-06-13 12:56:17,556] {logging_mixin.py:95} INFO - [2019-06-13 12:56:17,555] {jobs.py:2562} INFO - Task exited with return code 0

我还有一些其他代码,其中 try block 使用 sys.exit(1)。但是,它没有引发,我是否需要引发此错误才能以 1 退出?

我试过在我的 try block 中使用 sys.exit(1)。

        if count==0:
self._logger.error("Missing data, nothing was loaded")
sys.exit(1)
else:
self._logger.info("Data is present, safe to load to prod!")

我希望得到以下信息以便收到失败通知。

2019-06-13 12:56:17,556] {logging_mixin.py:95} INFO - [2019-06-13 12:56:17,555] {jobs.py:2562} INFO - Task exited with return code 1

最佳答案

看起来您正在使用 BashOperator 来调用您的 Python 脚本。这意味着您需要使用 set -e 之类的东西来确保 Bash 在您的 Python 命令中遇到非零代码时停止执行并以相同的代码自行退出,请参阅 What does set -e mean in a bash script?更多细节。那么这应该会像您预期的那样使任务失败。

关于python - 强制 Airflow 以退出代码 1 终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56586533/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com