使用 add_done_callback() 和 reponse.metadata() 进行 automl

using add_done_callback() and reponse.metadata() for automl

我正在尝试使用 automl 的标准示例。我希望 create_model 启动一个长 运行 操作,该操作将在完成后更新操作响应,然后访问元数据(以获取新训练模型的 model_id)。但是脚本在 metadata = response.metadata() 上立即失败 "TypeError: 'OperationMetadata' object is not callable"

我 运行 这段代码在 Airflow/google composer 的 PythonOperator 中,如果它有什么不同的话。我可以在 AutoML UI 中看到模型开始正确训练。

我的代码是这样的,但是it's basically the example usage that's in the docs.:

from google.cloud import automl

client = automl.AutoMlClient()

...
response = client.create_model(project_location, my_model)

def callback(operation_future):
   # Handle result.
   result = operation_future.result()

response.add_done_callback(callback)
metadata = response.metadata()

我正在使用 google-cloud-automl==0.9.0

https://googleapis.dev/python/automl/latest/gapic/v1beta1/tables.html有帮助吗?这是一个手动编写的 Python SDK,构建于 automl.AutoMlClient.

之上

我建议不要使用您在此处提供的示例 basic usage that's in the docs.:

最好使用 Google Cloud AutoML Operators How-to Guides Using Operators Google Cloud Operators

使用 auto_ml 特定运算符是在 Airflow/Composer 环境中实施 Auto_ML 模型的推荐方法。

这是 Python Client for Cloud AutoML API

的完整 API 参考

我运行陷入同样的​​问题。文档中的那个例子真的让我误入歧途。如果您对响应调用 result() 方法,它实际上会等到模型完成训练后再 returns 进行任何操作,因此这就是您需要做的全部。然后您可以从该结果中得到 model_id。

import time
from google.cloud import automl

client = automl.AutoMlClient()

...
response = client.create_model(project_location, my_model)

model_id = response.result().name.split('/')[-1]