我在执行responseFuture.get()时,我的代码给出了cancelException。

时间:2019-01-09 10:23:26

标签: google-cloud-platform

我在执行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)

1 个答案:

答案 0 :(得分:0)

createModelAsync方法在调用模型as stated in the documentation后不会立即返回模型:

  

create_model函数开始训练操作并打印   操作名称。培训是异步进行的,可能需要   在完成过程中,因此您可以使用操作ID来检查培训   状态。训练完成后,create_model返回模型ID。

所以造成异常的原因可能是您试图获得尚未训练的模型。

此外,我不确定您尝试使用responseFuture.get()方法获得什么,因为您正在使用的OperationFuture不存在该方法。如果您想使用get information of the training process的模型,请改用.getInitialFuture()