为任务设置重试参数

创建任务时,您可以使用 projects.locations.queues.tasks.create 方法指定失败任务的最大重试次数、设置重试尝试的时间限制,以及控制重试之间的时间间隔。任务成功执行后,系统会将其从队列中移除。在所有情况下,系统还会应用任务保留期限上限

此任务级重试配置会替换相应任务的队列级重试配置

在创建任务时配置重试

以下示例演示了在创建 HTTP 目标任务时,如何通过向 Cloud Tasks API 直接发送请求来设置重试参数。您可以在创建 App Engine 任务时使用相同的重试参数。如需了解更多参数详情,请参阅 Task 资源的 RetryConfig 设置

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

  • PROJECT_ID:必填。将创建任务的 Google Cloud 项目的项目 ID。
  • REGION:必填。部署队列的区域,例如 us-central1
  • QUEUE_ID:必填。任务将添加到的队列的 ID。
  • URL:必填。请求将发送到的完全限定网址。此字符串必须以 http://https:// 开头,例如:https://www.example.com
  • SERVICE_ACCOUNT_EMAIL:可选。用于生成授权令牌的服务账号电子邮件地址,该令牌包含在执行任务时发送给目标的请求中。服务账号必须与队列位于同一项目中。调用者必须具有服务账号的 iam.serviceAccounts.actAs 权限。

    如需生成 OAuth2 访问令牌而非 OpenID Connect 令牌,请将 oidcToken 字段替换为 oauthToken 以指定服务账号电子邮件地址。

  • MAX_ATTEMPTS:可选。任务可以尝试的最大次数,包括第一次尝试。如需允许进行无限次重试,请将此值设置为 -1。即使达到 MAX_ATTEMPTS 或将 MAX_ATTEMPTS 设置为 -1MAX_RETRY_DURATION 仍适用。
  • MAX_RETRY_DURATION:可选。 重试失败任务的最长时间(从首次尝试任务时算起)。该值必须是以“s”结尾的字符串,如 5s。如需指定无限时长,请将此属性设置为 0s。即使达到 MAX_RETRY_DURATION 或将其设置为 0sMAX_ATTEMPTS 仍适用。
  • MIN_INTERVAL:可选。重试尝试之间的最短等待时间。该值必须是以“s”结尾的字符串,如 5s
  • MAX_INTERVAL:可选。重试尝试之间的最长等待时间。该值必须是以“s”结尾的字符串,如 5s
  • MAX_DOUBLINGS:可选。在增加量变为常量之前,失败任务重试之间的时间间隔将加倍的最大次数。任务的重试间隔从 MIN_INTERVAL 开始,然后加倍 MAX_DOUBLINGS 次,然后线性增加,最后以 MAX_INTERVAL 为间隔重试,最多 MAX_ATTEMPTS 次。

    例如,如果 MIN_INTERVAL10sMAX_INTERVAL300sMAX_DOUBLINGS3,则重试时间间隔将加倍 3 次,线性增加 2^3 * 10 秒,然后以 MAX_INTERVAL 的时间间隔重试,直到任务尝试次数达到 MAX_ATTEMPTS 次:10 秒、20 秒、40 秒、80 秒、160 秒、240 秒、300 秒、300 秒,依此类推。

  • SCHEDULE_TIME:可选。 任务计划尝试的时间,采用 RFC 3339 格式,例如 2026-10-02T15:01:23Z。如果未设置时间或时间为过去的时间,Cloud Tasks 会将其设置为当前时间。

请求 JSON 正文:

{
  "task": {
    "httpRequest": {
      "url": "URL",
      "httpMethod": "POST",
      "oidcToken": {
        "serviceAccountEmail": "SERVICE_ACCOUNT_EMAIL"
      }
    },
    "retryConfig": {
      "maxAttempts": MAX_ATTEMPTS,
      "maxRetryDuration": "MAX_RETRY_DURATION",
      "minBackoff": "MIN_INTERVAL",
      "maxBackoff": "MAX_INTERVAL",
      "maxDoublings": MAX_DOUBLINGS
    },
    "scheduleTime": "SCHEDULE_TIME"
  }
}

如需发送您的请求,请展开以下选项之一:

如果成功,响应正文将包含新创建的 Task 资源实例。

{
  "name": "projects/PROJECT_ID/locations/REGION/queues/QUEUE_ID/tasks/TASK_ID",
  "httpRequest": {
    "url": "URL",
    "httpMethod": "POST",
    "headers": {
      "User-Agent": "Google-Cloud-Tasks"
    },
    "oidcToken": {
      "serviceAccountEmail": "SERVICE_ACCOUNT_EMAIL",
      "audience": "URL"
    }
  },
  "retryConfig": {
    "maxAttempts": MAX_ATTEMPTS,
    "maxRetryDuration": "MAX_RETRY_DURATION",
    "minBackoff": "MIN_INTERVAL",
    "maxBackoff": "MAX_INTERVAL",
    "maxDoublings": MAX_DOUBLINGS
  },
  "scheduleTime": "SCHEDULE_TIME",
  "createTime": "2026-04-30T19:11:50Z",
  "dispatchDeadline": "600s",
  "view": "BASIC"
}

后续步骤