强制 Airflow 以退出代码 1 终止
Force Airflow to terminate with exit code 1
我在 Airflow 中 运行 的一些任务偶尔会因为各种原因失败。有些是我抓到的,有些是新的,也不例外。我想获取退出代码 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 块使用 sys.exit(1)
的其他代码位。但是,它没有引发,我是否需要引发此错误才能以 1 退出?
我试过在我的 try 块中使用 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 命令上的 non-zero 代码时停止执行,并使用相同的代码自行退出,请参阅 What does set -e mean in a bash script? 了解更多详情。那么这应该会像您预期的那样使任务失败。
我在 Airflow 中 运行 的一些任务偶尔会因为各种原因失败。有些是我抓到的,有些是新的,也不例外。我想获取退出代码 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 块使用 sys.exit(1)
的其他代码位。但是,它没有引发,我是否需要引发此错误才能以 1 退出?
我试过在我的 try 块中使用 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 命令上的 non-zero 代码时停止执行,并使用相同的代码自行退出,请参阅 What does set -e mean in a bash script? 了解更多详情。那么这应该会像您预期的那样使任务失败。