Cómo establecer parámetros de reintento para una tarea

Cuando creas una tarea, puedes especificar la cantidad máxima de veces que se debe reintentar una tarea con errores, establecer un límite de tiempo para los reintentos y controlar el intervalo entre ellos con el projects.locations.queues.tasks.create método. Una vez que se ejecuta una tarea de forma correcta, se quita de la cola. En todos los casos, también se aplica el límite máximo de retención de tareas.

Esta configuración de reintento a nivel de tarea anula la configuración de reintento a nivel de cola para la tarea.

Configura los reintentos cuando creas una tarea

En el siguiente ejemplo, se muestra cómo configurar los parámetros de reintento cuando se crea una tarea de destino HTTP mediante el envío de una solicitud directa a la API de Cloud Tasks. Puedes usar los mismos parámetros de reintento cuando creas una tarea de App Engine. Para obtener más detalles sobre los parámetros, consulta la RetryConfig configuración para el Task recurso.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: es obligatorio. Es el ID del Google Cloud proyecto en el que se creará la tarea.
  • REGION: es obligatorio. Es la región en la que se implementa la cola, por ejemplo, us-central1.
  • QUEUE_ID: es obligatorio. Es el ID de la cola a la que se agregará la tarea.
  • URL: es obligatorio. Es la URL completamente calificada a la que se enviará la solicitud. Esta cadena debe comenzar con http:// o https://, por ejemplo: https://www.example.com.
  • SERVICE_ACCOUNT_EMAIL: es opcional. Es el correo electrónico de la cuenta de servicio que se usa para generar un token de autorización que se incluye en la solicitud enviada al destino cuando se ejecuta la tarea. La cuenta de servicio debe estar en el mismo proyecto que la cola. El llamador debe tener el iam.serviceAccounts.actAs permiso para la cuenta de servicio.

    Para generar un token de acceso de OAuth2 en lugar de un token de OpenID Connect, reemplaza el oidcToken campo por oauthToken para especificar el correo electrónico de la cuenta de servicio.

  • MAX_ATTEMPTS: es opcional. Es la cantidad máxima de intentos de una tarea (incluido el primero) . Para permitir una cantidad ilimitada de reintentos, configúralo en -1. MAX_RETRY_DURATION se sigue aplicando incluso si MAX_ATTEMPTS se alcanza o se establece en -1.
  • MAX_RETRY_DURATION: es opcional. Es la cantidad máxima de tiempo que debe esperarse antes de reintentar una tarea con errores, medido desde la primera ejecución de la tarea. El valor debe ser una string que termine en "s", como 5s. Para especificar una duración ilimitada, configúralo en 0s. MAX_ATTEMPTS se sigue aplicando incluso si se alcanza MAX_RETRY_DURATION o se establece en 0s.
  • MIN_INTERVAL: es opcional. Es la cantidad mínima de tiempo que se debe esperar entre los reintentos. El valor debe ser una string que termine en "s", como 5s.
  • MAX_INTERVAL: es opcional. Es la cantidad máxima de tiempo que se debe esperar entre los reintentos. El valor debe ser una string que termine en "s", como 5s.
  • MAX_DOUBLINGS: es opcional. Es la cantidad máxima de veces que se puede duplicar el intervalo entre reintentos de las tareas con errores antes de que el aumento se vuelva constante. El intervalo de reintento de una tarea comienza en MIN_INTERVAL, luego duplica los tiempos de MAX_DOUBLINGS, después aumenta linealmente y, por último, reintenta en intervalos de MAX_INTERVAL hasta lograr la cantidad máxima de reintentos.MAX_ATTEMPTS

    Por ejemplo, si MIN_INTERVAL es 10s, MAX_INTERVAL es 300s y MAX_DOUBLINGS es 3, el intervalo de reintento se duplicará 3 veces, aumentará linealmente en 2^3 * 10 s y, luego, se reintentará en intervalos de MAX_INTERVAL hasta que la tarea se haya intentado MAX_ATTEMPTS veces: 10 s, 20 s, 40 s, 80 s, 160 s, 240 s, 300 s, 300 s, etcétera.

  • SCHEDULE_TIME: es opcional. Es la hora en la que se programa la tarea para que se intente, en formato RFC 3339, por ejemplo, 2026-10-02T15:01:23Z. Si la hora no está configurada o es anterior, Cloud Tasks la establecerá en la hora actual.

Cuerpo JSON de la solicitud:

{
  "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"
  }
}

Para enviar tu solicitud, expande una de estas opciones:

Si el proceso se realiza de forma correcta, el cuerpo de la respuesta contiene la instancia recién creada de el Task recurso.

{
  "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"
}

¿Qué sigue?