我在执行responseFuture.get()时,我的代码给出了cancelionException responseFuture是OperationFuture。我当时正在研究autoML自然语言GCP。
// A resource that represents Google Cloud Platform location.
LocationName projectLocation = LocationName.of(projectId, computeRegion);
// Set model meta data
TextClassificationModelMetadata textClassificationModelMetadata =
TextClassificationModelMetadata.newBuilder().build();
// Set model name, dataset and metadata.
Model myModel =
Model.newBuilder()
.setDisplayName(modelName)
.setDatasetId(dataSetId)
.setTextClassificationModelMetadata(textClassificationModelMetadata)
.build();
// Create a model with the model metadata in the region.
OperationFuture<Model, OperationMetadata> responseFuture = client.createModelAsync(projectLocation, myModel);
Model response = responseFuture.get()
我在最后一行收到以下错误
线程“主”中的异常 java.util.concurrent.CancellationException:任务已取消。在 com.google.common.util.concurrent.AbstractFuture.cancellationExceptionWithCause(AbstractFuture.java:1237) 在 com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:524) 在 com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:487) 在 com.google.common.util.concurrent.AbstractFuture $ TrustedFuture.get(AbstractFuture.java:83) 在 com.google.common.util.concurrent.ForwardingFuture.get(ForwardingFuture.java:62) 在 com.google.api.gax.longrunning.OperationFutureImpl.get(OperationFutureImpl.java:127)
答案 0 :(得分:0)
createModelAsync
方法在调用模型as stated in the documentation后不会立即返回模型:
create_model函数开始训练操作并打印 操作名称。培训是异步进行的,可能需要 在完成过程中,因此您可以使用操作ID来检查培训 状态。训练完成后,create_model返回模型ID。
所以造成异常的原因可能是您试图获得尚未训练的模型。
此外,我不确定您尝试使用responseFuture.get()
方法获得什么,因为您正在使用的OperationFuture
不存在该方法。如果您想使用get information of the training process的模型,请改用.getInitialFuture()
。