借助 Cloud Tasks,您可以控制异步工作负载执行、暂停队列处理以及排查活跃任务流问题。您可以使用 Google Cloud 控制台、Google Cloud CLI 或 Cloud Tasks API 配置和维护队列和任务。
准备工作
- 确保您已有 Cloud Tasks 队列。如需了解详情,请参阅创建 Cloud Tasks 队列。
- 确保您拥有管理队列和任务所需的 Identity and Access Management (IAM) 角色,例如 Cloud Tasks Admin (
roles/cloudtasks.admin)、Cloud Tasks Queue Admin (roles/cloudtasks.queueAdmin) 或 Cloud Tasks Task Deleter (roles/cloudtasks.taskDeleter)。
从队列中删除任务
如果任务已安排或已分派,您可以将其删除。例如,您可能需要删除无论重试多少次都无法成功完成的任务。如果任务已成功完成,或者在持续失败后已用尽重试次数,则无法删除该任务。如果达到任务保留上限,系统会自动删除任务。
控制台
在 Google Cloud 控制台中,前往 Cloud Tasks > 队列页面。
点击要删除的任务所在的队列的名称。
选中要删除的任务对应的复选框。
点击 删除任务。
在弹出的提示中,点击删除。
gcloud
使用 gcloud tasks delete 命令删除任务:
gcloud tasks delete TASK_NAME \ --queue=QUEUE_ID \ --location=LOCATION
替换以下内容:
TASK_NAME:要删除的任务的 ID 或完整资源名称QUEUE_ID:任务所属队列的名称LOCATION:部署队列的区域,例如us-central1
REST
如需删除任务,请使用 projects.locations.queues.tasks.delete 方法。
在使用任何请求数据之前,请先进行以下替换:
QUEUE_ID:任务所属队列的名称TASK_NAME:要删除的任务的名称PROJECT_ID:您的 Google Cloud项目 IDLOCATION:队列所在的区域,例如us-central1
请求正文必须为空。
如需发送您的请求,请展开以下选项之一:
如果成功,则响应正文为空。
从队列中删除一批任务
您可以使用 projects.locations.queues.tasks.batchDelete 方法删除任务名称列表,从而从队列中删除一批任务。
请注意以下几点:
所有任务都必须从同一队列中删除。
单批次中可删除的任务数量存在限制。如需了解详情,请参阅配额和限制。
将单个操作汇总到单个请求中的批量请求不是原子操作,因为批量请求中包含的一些操作可能会失败,而其他操作可能会成功。
只有在任务已安排或已派单的情况下,您才能将其删除。如果任务已成功完成,或者在持续失败后已用尽重试次数,则无法删除该任务。如果达到任务保留上限,系统会自动删除任务。
您还可以创建一批任务。如需了解详情,请参阅创建一批任务。
在使用任何请求数据之前,请先进行以下替换:
TASK_NAME:要删除的任务的名称,格式如下:projects/PROJECT_ID/locations/REGION/queues/QUEUE_ID/tasks/TASK_IDPROJECT_ID:您的 Google Cloud项目 IDREGION:队列所在的区域,例如us-central1QUEUE_ID:任务所属队列的名称
请求正文包含任务名称列表。
请求 JSON 正文:
{
"names": [
"TASK_NAME"
]
}
如需发送您的请求,请展开以下选项之一:
如果成功,响应正文会包含一个 Operation 实例。
{
"name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.tasks.v2.BatchDeleteTasksMetadata"
},
"done": false
}
从队列中完全清除所有任务
您可以通过清除队列中的所有任务来删除这些任务。在清除调用之前创建的所有任务都会被永久删除。不过,清除操作最多可能需要一分钟才能生效,并且任务可能会在清除生效之前分派。
控制台
在 Google Cloud 控制台中,前往 Cloud Tasks > 队列页面。
点击要删除的任务所属队列的名称。
点击 清除队列。
在提示中,点击清除。
gcloud
使用 gcloud tasks queues purge 命令清除队列:
gcloud tasks queues purge QUEUE_ID \ --location=LOCATION
替换以下内容:
QUEUE_ID:要清除的队列的名称LOCATION:部署队列的区域,例如us-central1
REST
如需清除队列,请使用 projects.locations.queues.purge 方法。
在使用任何请求数据之前,请先进行以下替换:
QUEUE_ID:要清除的队列的名称PROJECT_ID:您的 Google Cloud项目 IDLOCATION:部署队列的区域,例如us-central1
请求正文必须为空。
如需发送您的请求,请展开以下选项之一:
如果成功,则响应正文包含一个 Queue 实例:
{
"name": "projects/PROJECT_ID/locations/LOCATION/queues/QUEUE_ID",
"rateLimits": {
"maxDispatchesPerSecond": 500,
"maxBurstSize": 100,
"maxConcurrentDispatches": 1000
},
"retryConfig": {
"maxAttempts": 100,
"minBackoff": "0.100s",
"maxBackoff": "3600s",
"maxDoublings": 16
},
"state": "RUNNING",
"purgeTime": "2025-03-28T13:06:30.110255Z"
}
暂停或恢复队列
您可以暂停或恢复队列。暂停某个队列会使任务停止执行和传送。您仍然可以创建任务并将其推送或附加到队列,但在队列恢复之前,系统不会处理这些任务。当您恢复队列时,Cloud Tasks 会开始分派积压的任务,而无需定义执行顺序。如果您要恢复积压了大量任务的高流量队列,请遵循逐步增加流量的指南,以防止目标过载。
控制台
在 Google Cloud 控制台中,前往 Cloud Tasks > 队列页面。
选中要暂停或恢复的队列对应的复选框。
如需暂停队列,请点击 暂停队列,然后在提示中点击暂停。
如需恢复已暂停的队列,请点击 恢复队列。
gcloud
使用
gcloud tasks queues pause命令暂停队列:gcloud tasks queues pause QUEUE_ID \ --location=LOCATION
替换以下内容:
QUEUE_ID:您要暂停的队列的名称LOCATION:部署队列的区域,例如us-central1
使用
gcloud tasks queues resume命令恢复队列:gcloud tasks queues resume QUEUE_ID \ --location=LOCATION
REST
如需暂停队列,请使用
projects.locations.queues.pause方法。在使用任何请求数据之前,请先进行以下替换:
QUEUE_ID:您要暂停的队列的名称PROJECT_ID:您的 Google Cloud项目 IDLOCATION:部署队列的区域,例如us-central1
请求正文必须为空。
如需发送您的请求,请展开以下选项之一:
如果成功,则响应正文包含一个
Queue实例:{ "name": "projects/PROJECT_ID/locations/LOCATION/queues/QUEUE_ID", "rateLimits": { "maxDispatchesPerSecond": 500, "maxBurstSize": 100, "maxConcurrentDispatches": 1000 }, "retryConfig": { "maxAttempts": 100, "minBackoff": "0.100s", "maxBackoff": "3600s", "maxDoublings": 16 }, "state": "PAUSED" }如需恢复队列,请使用
projects.locations.queues.resume方法。在使用任何请求数据之前,请先进行以下替换:
QUEUE_ID:您要恢复的队列的名称PROJECT_ID:您的 Google Cloud项目 IDLOCATION:部署队列的区域,例如us-central1
请求正文必须为空。
如需发送您的请求,请展开以下选项之一:
如果成功,则响应正文包含一个
Queue实例:{ "name": "projects/PROJECT_ID/locations/LOCATION/queues/QUEUE_ID", "rateLimits": { "maxDispatchesPerSecond": 500, "maxBurstSize": 100, "maxConcurrentDispatches": 1000 }, "retryConfig": { "maxAttempts": 100, "minBackoff": "0.100s", "maxBackoff": "3600s", "maxDoublings": 16 }, "state": "RUNNING" }
列出队列
您可以列出队列。列出队列时,系统会返回一些速率限制和重试参数详细信息。请注意,以下字段是等效的:
- 最大速率(控制台)、
MAX_RATE(gcloud)、maxDispatchesPerSecond(REST) 并发请求数上限(控制台)、
MAX_NUM_OF_TASKS(gcloud)、maxConcurrentDispatches(REST)
控制台
在 Google Cloud 控制台中,前往 Cloud Tasks > 队列页面。
系统会列出 Google Cloud 项目中的所有队列。
如需了解详情,请点击队列的名称,然后点击配置标签页。
系统会显示速率限制和重试参数详细信息。
gcloud
使用 gcloud tasks queues list 命令列出队列:
gcloud tasks queues list \ --location=LOCATION
将 LOCATION 替换为队列部署到的区域,例如 us-central1。如果未指定位置,则系统会使用 Google Cloud 项目的 App Engine 应用的位置(如果存在);否则,您必须指定一个位置。
输出应类似如下所示:
QUEUE_NAME: my-queue STATE: PAUSED MAX_NUM_OF_TASKS: 1000 MAX_RATE (/sec): 500.0 MAX_ATTEMPTS: 100 ...
REST
如需列出队列,请使用 projects.locations.queues.list 方法。
在使用任何请求数据之前,请先进行以下替换:
PROJECT_ID:您的 Google Cloud项目 ID。LOCATION:创建队列的区域,例如us-central1。
如需发送您的请求,请展开以下选项之一:
如果成功,则响应正文包含 Queue 资源的实例,并且响应应类似如下内容:
{
"queues": [
{
"name": "projects/PROJECT_ID/locations/LOCATION/queues/QUEUE_ID",
"rateLimits": {
"maxDispatchesPerSecond": 500,
"maxBurstSize": 100,
"maxConcurrentDispatches": 1000
},
"retryConfig": {
"maxAttempts": 100,
"minBackoff": "0.100s",
"maxBackoff": "3600s",
"maxDoublings": 16
},
"state": "PAUSED",
"purgeTime": "2025-03-28T13:37:32.292552Z"
},
...
],
"nextPageToken": "CjQKCHppcHBlcjIAEgwI9-GExAYQ_oDc1AMaGioLeWlrZXMtYWdhaW4yC3VzLWNlbnRyYWwx"
}
删除队列
您可以删除不再需要的任何队列,但 App Engine default 队列除外。删除队列后,您必须等待 3 天才能重新创建同名队列。此等待期适用于通过任何界面(包括 Google Cloud 控制台、gcloud CLI、REST 或 RPC API 或 Terraform)删除的队列。这样可以防止在删除时执行的任务出现意外行为,并避免在删除和重新创建周期内发生内部进程故障。
在此墓碑窗口期(最长 3 天)内,队列创建请求可能会显示为成功,但实际上并未重新创建队列。如需确认已重新创建同名队列,请使用 gcloud tasks queues describe 命令或 projects.locations.queues.get 方法检索该队列。成功的 (200 OK) 响应会确认队列已重新创建。
如需在 CI/CD 流水线中清除任务、修改队列配置或管理队列,而又不丢失队列或触发 3 天等待期,请使用以下替代方法,而不是删除并重新创建队列:
完全清除队列:使用
gcloud tasks queues purge命令或projects.locations.queues.purge方法从队列中完全清除所有任务,以删除队列中的所有任务,同时保持队列处于活跃状态。就地更新队列:使用
gcloud tasks queues update命令或projects.locations.queues.patch方法修改现有队列的速率限制、重试参数或路由。如需了解详情,请参阅配置队列路由、限制和重试。暂停队列:使用
gcloud tasks queues pause命令或projects.locations.queues.pause方法暂停队列,以暂时停止任务分派,同时保留已加入队列的任务。配置生命周期防护措施:在基础设施即代码模板中配置防删除保护,防止在自动部署期间意外删除队列,例如在 Terraform
lifecycle块中设置prevent_destroy = true。
如需删除队列,请使用 Google Cloud 控制台、gcloud CLI 或 Cloud Tasks API:
控制台
在 Google Cloud 控制台中,前往 Cloud Tasks > 队列页面。
选中要删除的队列对应的复选框。
点击 删除队列。
在提示中,输入队列名称,然后点击确认。
gcloud
使用 gcloud tasks queues delete 命令删除队列:
gcloud tasks queues delete QUEUE_ID \ --location=LOCATION
替换以下内容:
QUEUE_ID:要删除的队列的 ID 或完全限定标识符LOCATION:部署队列的区域,例如us-central1
除非您传递 --quiet 标志,否则 gcloud CLI 会在删除队列之前提示您进行确认。
REST
如需删除队列,请使用 projects.locations.queues.delete 方法。
在使用任何请求数据之前,请先进行以下替换:
QUEUE_ID:要删除的队列的名称PROJECT_ID:您的 Google Cloud项目 IDLOCATION:部署队列的区域,例如us-central1
请求正文必须为空。
如需发送您的请求,请展开以下选项之一:
如果成功,则响应正文为空。