python - 强制气流以退出代码 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
解决方案
看起来您正在使用 aBashOperator
来调用您的 Python 脚本。这意味着您将需要使用类似set -e
的方法来确保 Bash 在遇到 Python 命令上的非零代码时停止执行,并以相同的代码自行退出,请参阅Set -e 在 bash 脚本中的含义是什么?更多细节。那么这应该会像您期望的那样使任务失败。
推荐阅读
- excel - 在 Excel 中将数据从 Sheet1 复制到 Sheet2 的公式
- google-bigquery - Google BigQuery:将数据从一个位置移动到另一个位置
- unity3d - 在 Unity 中安装 Photon 后如何修复错误“执行 com.android.build.gradle.internal.tasks.Workers$ActionFacade 时发生故障”
- linux - 使用 tar 保留存档权限失败
- c++ - 套接字超时:select vs setsockopt
- javascript - 如何将 Cordova 平台\浏览器\www 内容部署到 Azure 应用服务?
- qt - 从 Qt 5.9 升级到 5.12 时出现 qtvirtualkeyboard 问题
- ios - 如何检测自定义框架是否在 iOS 中禁用了调试器模式?
- python - 修改联合查找数据结构
- c# - 我正在尝试使用 AWS KMS 在 asp.net 核心中加密它在本地系统上工作正常。但是当我们在弹性 beantalk 上部署时,它们会出现异常