管理长时间运行的操作

本页面介绍如何管理 Cloud Life Sciences API 长时间运行的操作 (LRO) 的生命周期。

如果方法调用可能需要很长时间才能完成,系统就会返回长时间运行的操作。 Cloud Life Sciences API 会在您每次调用 projects.locations.pipelines.rungcloud beta lifesciences pipelines run 时创建一个 LRO。 LRO 会跟踪流水线的状态。

您可以使用 Cloud Life Sciences API 提供的操作 API 来检查 LRO 的状态。您也可以对 LRO 执行 listpollcancel 操作。

直接调用 Cloud Life Sciences API 时,LRO 会在 Google Cloud 项目和位置层级上加以管理。 向 LRO 直接发出请求时,请在其中提供 Google Cloud 项目以及 LRO 的运行位置。

如果您已设置 gcloud CLI,那么在您使用 gcloud CLI 调用 Cloud Life Sciences API 时,您对 LRO 的请求中只需要提供操作标识符。Google Cloud 项目 ID 以及运行 LRO 的位置可以根据操作 ID 推断出来。

您可以使用 Google Cloud 控制台、 Google Cloud CLI 或直接调用 API。Google Cloud 控制台 并未包含 使用 gcloud CLI 并调用 Cloud Life Sciences API。

在 LR 完成之后,LRO 的记录会保留大约 30 天,也就是说,在这段时间之后,您将无法再查看或列出 LRO。

获取长时间运行的操作的详细信息

以下示例展示了如何获取 LRO 的详细信息。

控制台

  1. 在 Google Cloud 控制台中,前往“Life Sciences 流水线”页面。

    转到“Life Sciences 流水线”页面

  2. 此时会显示 LRO 列表及其状态。找到您在查找的 LRO 并查看其状态。状态列的可能值包括正在运行已完成失败

gcloud

假设您在调用 gcloud beta lifesciences pipelines run 后收到以下响应:

Running [projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID].

该响应显示,Cloud Life Sciences API 创建了一个带有操作 ID 的 LRO。

要获取有关 LRO 的详情,请运行 gcloud beta lifesciences operations describe 命令,并指定操作 ID。

gcloud beta lifesciences operations describe OPERATION_ID

您还可以通过列出长时间运行的数据库操作来检索操作 ID。

如果请求成功,命令提示符将显示操作详情。 此处显示的输出提取自快速入门中的流水线操作。

API

要获取 LRO 的状态并查看其详情,请调用 projects.locations.operations.get 方法。

REST

假设您在调用 projects.locations.pipelines.run 后收到以下响应:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID"
}

响应中的 name 值表明,Cloud Life Sciences API 创建了一个名为 projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID 的 LRO。

您还可以通过列出长时间运行的操作来检索 LRO 名称。

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:您的 Google Cloud 项目 ID
  • LOCATION:LRO 的运行位置
  • OPERATION_ID:LRO 的标识符

HTTP 方法和网址:

GET https://lifesciences.googleapis.com/v2beta/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID

如需发送请求,请选择以下方式之一:

curl

执行以下命令:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://lifesciences.googleapis.com/v2beta/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID"

PowerShell

执行以下命令:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://lifesciences.googleapis.com/v2beta/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID" | Select-Object -Expand Content

API Explorer

打开方法参考页面。APIs Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。 填写所有必填字段,然后点击执行

您应该收到类似以下内容的 JSON 响应。此处显示的输出提取自快速入门中的流水线操作。

列出长时间运行的操作

以下示例展示了如何列出某个 Google Cloud 项目和位置的 LRO。

控制台

  1. 在 Google Cloud 控制台中,前往“Life Sciences 流水线”页面。

    转到“Life Sciences 流水线”页面

  2. 此时会显示 LRO 列表及其状态。状态列的可能值包括正在运行已完成失败

gcloud

如需列出某个 Google Cloud 项目和位置的 LRO,请运行 gcloud beta lifesciences operations list 命令。

gcloud beta lifesciences operations list

如果请求成功,命令提示符将列出 LRO:

ID                    LOCATION     DONE
OPERATION_ID          LOCATION       {TRUE|FALSE}
...

API

如需列出某个 Google Cloud 项目和位置的 LRO,请调用 projects.locations.operations.list 方法。

REST

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:您的 Google Cloud 项目 ID
  • LOCATION:一个或多个 LRO 的运行位置

HTTP 方法和网址:

GET https://lifesciences.googleapis.com/v2beta/projects/PROJECT_ID/locations/LOCATION/operations

如需发送请求,请选择以下方式之一:

curl

执行以下命令:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://lifesciences.googleapis.com/v2beta/projects/PROJECT_ID/locations/LOCATION/operations"

PowerShell

执行以下命令:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://lifesciences.googleapis.com/v2beta/projects/PROJECT_ID/locations/LOCATION/operations" | Select-Object -Expand Content

API Explorer

打开方法参考页面。APIs Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。 填写所有必填字段,然后点击执行

您应该收到类似以下内容的 JSON 响应:

{
  "operations": [
    {
      "name": "PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.lifesciences.v2beta.Metadata",
        "pipeline": {
          ...
        }
        "createTime": "CREATE_TIME",
        "startTime": "START_TIME",
        "endTime": "END_TIME"
      },
      "done": true,
      "response": {
        "@type": "type.googleapis.com/cloud.lifesciences.pipelines.RunPipelineResponse"
      }
    },
    ...
  ]
}

轮询长时间运行的操作

以下示例展示了如何轮询 LRO 的状态。

控制台

  1. 在 Google Cloud 控制台中,转到“Life Sciences 流水线”页面。

    转到“Life Sciences 流水线”页面

  2. 此时会显示 LRO 列表及其状态。点击刷新图标,查看 LRO 的更新状态。

gcloud

启动流水线后,您可以通过运行 gcloud beta lifesciences operations wait 命令轮询 LRO。

gcloud beta lifesciences operations wait OPERATION_ID

如果请求成功,命令提示符将显示以下内容:

Waiting for [projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID] to complete...

操作完成后,命令提示符将显示以下内容:

Waiting for [projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID] to complete...done.

API

要轮询 LRO,请反复调用 projects.locations.operations.get 方法,直到操作完成。在每个轮询请求之间使用退避时间,例如 10 秒。

在使用下面的任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:您的 Google Cloud 项目 ID
  • LOCATION:LRO 的运行位置
  • OPERATION_ID:LRO 的标识符

HTTP 方法和网址:

GET https://lifesciences.googleapis.com/v2beta/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID

如需发送请求,请选择以下方式之一:

curl

执行以下命令,每隔 10 秒轮询一次 LRO 的状态:

while true; \
    do curl -X GET \
    -H "Authorization: Bearer "$(gcloud auth print-access-token) \
    "https://lifesciences.googleapis.com/v2beta/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID"; \
    sleep 10; \
    done

您应该收到类似以下内容的 JSON 响应。此处显示的输出提取自快速入门中的流水线操作。 操作完成后,响应的 endTime 字段中将包含 "done": true 和一个值。

PowerShell

执行以下命令,每隔 10 秒轮询一次 LRO 的状态:

$cred = gcloud auth print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Do {
  Invoke-WebRequest `
    -Method Get `
    -Headers $headers `
    -Uri "https://lifesciences.googleapis.com/v2beta/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID" | Select-Object -Expand Content
sleep 10
}

while ($true)

您应该收到类似以下内容的 JSON 响应。此处显示的输出提取自快速入门中的流水线操作。 操作完成后,响应的 endTime 字段中将包含 "done": true 和一个值。

取消长时间运行的操作

以下示例展示了如何在运行时取消 LRO。

控制台

  1. 在 Google Cloud 控制台中,前往“Life Sciences 流水线”页面。

    转到“Life Sciences 流水线”页面

  2. 点击要取消的 LRO 的 ID。
  3. 点击取消图标。

gcloud

要取消 LRO,请运行 gcloud beta lifesciences operations cancel 命令。

gcloud beta lifesciences operations cancel OPERATION_ID

如果请求成功,系统会显示一条取消提示:

Operation [OPERATION_ID] will be canceled.

Do you want to continue (Y/n)?  Y

要确认,请键入 Y。确认取消后,响应将返回空白正文。

Operation [OPERATION_ID] will be canceled.

Do you want to continue (Y/n)?  Y

{}

API

要取消 LRO,请调用 projects.locations.operations.cancel 方法。

REST

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:您的 Google Cloud 项目 ID
  • LOCATION:LRO 的运行位置
  • OPERATION_ID:LRO 的标识符

HTTP 方法和网址:

POST https://lifesciences.googleapis.com/v2beta/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID:cancel

如需发送请求,请选择以下方式之一:

curl

执行以下命令:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://lifesciences.googleapis.com/v2beta/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID:cancel"

PowerShell

执行以下命令:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://lifesciences.googleapis.com/v2beta/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID:cancel" | Select-Object -Expand Content

API Explorer

打开方法参考页面。APIs Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。 填写所有必填字段,然后点击执行

您应该收到类似以下内容的 JSON 响应:

{}