google.cloud.ml.dataflow.batch_prediction.PredictionDoFn 中的错误处理逻辑错误
Bug in error handling logic in google.cloud.ml.dataflow.batch_prediction.PredictionDoFn
我正在查看最新版本 (obtained from gs://cloud-ml/sdk/cloudml-0.1.9-alpha.dataflow.tar.gz
)
在 google/cloud/ml/dataflow/batch_prediction.py
的第 153-159 行,我们有以下代码:
except Exception as e: # pylint: disable=broad-except
logging.error("Got an unknown exception: [%s].", traceback.format_exc())
if self._cloud_logger:
self._cloud_logger.write_error_message(
str(e), self._create_snippet(context.element))
yield beam.pvalue.SideOutputValue("errors",
(e.error_message, context.element))
但是,Exception 对象 e
可能没有属性 error_message
。这偶尔会给我如下错误:
AttributeError: 'exceptions.RuntimeError' object has no attribute 'error_message' [while running 'Evaluate/ParDo(PredictionDoFn)']
AttributeError: 'exceptions.KeyError' object has no attribute 'error_message' [while running 'Evaluate/ParDo(PredictionDoFn)']
- 等等
我认为不应引发这些错误,因为 except 块的全部意义在于捕获这些错误并将它们作为辅助输出从 ParDo 传递出去。
感谢您报告此事!我们已经修复了它,很快就会在下一个版本中提供一个好的版本。
我正在查看最新版本 (obtained from gs://cloud-ml/sdk/cloudml-0.1.9-alpha.dataflow.tar.gz
)
在 google/cloud/ml/dataflow/batch_prediction.py
的第 153-159 行,我们有以下代码:
except Exception as e: # pylint: disable=broad-except
logging.error("Got an unknown exception: [%s].", traceback.format_exc())
if self._cloud_logger:
self._cloud_logger.write_error_message(
str(e), self._create_snippet(context.element))
yield beam.pvalue.SideOutputValue("errors",
(e.error_message, context.element))
但是,Exception 对象 e
可能没有属性 error_message
。这偶尔会给我如下错误:
AttributeError: 'exceptions.RuntimeError' object has no attribute 'error_message' [while running 'Evaluate/ParDo(PredictionDoFn)']
AttributeError: 'exceptions.KeyError' object has no attribute 'error_message' [while running 'Evaluate/ParDo(PredictionDoFn)']
- 等等
我认为不应引发这些错误,因为 except 块的全部意义在于捕获这些错误并将它们作为辅助输出从 ParDo 传递出去。
感谢您报告此事!我们已经修复了它,很快就会在下一个版本中提供一个好的版本。