处理长时间运行的操作

本页面介绍了如何在 AutoML Natural Language 中处理长时间运行的操作。

简介

AutoML Natural Language 中的一些操作需要一段时间才能完成,例如:

  • datasets.importData
  • datasets.exportData
  • datasets.delete
  • models.batchPredict
  • models.create
  • models.delete
  • models.deploy
  • models.undeploy

如果您使用的是 AutoML Natural Language 界面,您可以关闭浏览器窗口且此举不会对操作产生影响。操作完成后,面板会更新。

当您进行需要很长时间才能完成的 API 调用时,即使操作仍在运行,初始调用也会立即返回。您可以使用一些辅助方法来确定长时间运行的操作的状态。

长时间运行的操作完成后,AutoML Natural Language 会向项目所有者发送电子邮件。

轮询操作状态

您可以轮询长时间运行的操作的状态。此方法不会阻止您的程序,但您必须持续轮询直到操作完成。

要获取操作状态,请使用启动操作时的响应中的操作 ID。

在下面的命令中,将 operation-name 替换为操作的完整名称。完整名称的格式为 projects/{project-id}/locations/us-central1/operations/{operation-id}

curl -X GET \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json" \
  https://automl.googleapis.com/v1/operation-name

对于导入操作,您应该看到类似于如下的输出:此输出中有一个 metadata 对象包含特定于请求类型的信息。done 字段显示操作是否完成。如果操作已完成,响应会包含有关请求效果的信息。

{
  "name": "projects/1234/locations/us-central1/operations/TBL2126599795587061786",
  "metadata": {
...
  },
  "done": true,
  "response": {
...
  }
}

等待操作

如果要阻止此操作的执行,可以等待操作完成(或直到您指定的超时)。

在以下命令中,进行如下替换:

  • operation-name 替换为操作的完整名称。完整名称的格式为 projects/{project-id}/locations/us-central1/operations/{operation-id}

  • timeout 替换为您希望等待的最长时间,以秒为单位(支持小数)并以“s”结尾。例如,在等待命令中使用“4.5s”会使仍在运行的操作在四秒半后返回。

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json" \
   -d '{"timeout":"timeout"}' \
  https://automl.googleapis.com/v1/operation-name:wait

取消操作

您可以使用操作 ID 取消导入任务或训练任务。无法保证成功取消。不支持删除操作。

在下面的命令中,将 operation-name 替换为操作的完整名称。完整名称的格式为 projects/{project-id}/locations/us-central1/operations/{operation-id}

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  https://automl.googleapis.com/v1/operation-name:cancel