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 intentos con el método projects.locations.queues.tasks.create. Una vez que una tarea se ejecuta correctamente, se quita de la cola. En todos los casos, también se aplica el límite de retención máxima de tareas.

Esta configuración de reintentos a nivel de la tarea anula la configuración de reintentos a nivel de la fila para la tarea.

Configura reintentos cuando crees una tarea

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

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

  • PROJECT_ID: Obligatorio. ID del proyecto de Google Cloud en el que se creará la tarea.
  • REGION: Obligatorio. La región en la que se implementa la cola, por ejemplo, us-central1.
  • QUEUE_ID: Obligatorio. ID de la cola a la que se agregará la tarea.
  • URL: 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: Opcional. Es la dirección de 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 permiso iam.serviceAccounts.actAs para la cuenta de servicio.

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

  • MAX_ATTEMPTS: es opcional. Cantidad máxima de intentos de una tarea, incluido el primero. Para permitir una cantidad ilimitada de reintentos, configura este parámetro en -1. MAX_RETRY_DURATION se sigue aplicando incluso si se alcanza MAX_ATTEMPTS 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, medida desde el momento en que se intentó realizar la tarea por primera vez. El valor debe ser una string que termine en "s", como 5s. Para especificar una duración ilimitada, establece este valor en 0s. MAX_ATTEMPTS se sigue aplicando incluso si se alcanza MAX_RETRY_DURATION o se configura como 0s.
  • MIN_INTERVAL: es opcional. Es la cantidad mínima de tiempo que se debe esperar entre los intentos. El valor debe ser una cadena que termine en "s", como 5s.
  • MAX_INTERVAL: es opcional. Es la cantidad máxima de tiempo que debe esperarse entre dos intentos. El valor debe ser una cadena que termine en "s", como 5s.
  • MAX_DOUBLINGS: es opcional. Es la cantidad máxima de veces que se duplicará el intervalo entre los 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 se duplica MAX_DOUBLINGS veces, después aumenta de forma lineal y, por último, se reintenta en intervalos de MAX_INTERVAL hasta MAX_ATTEMPTS veces.

    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 se haya intentado la tarea 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. Fecha y hora en que se programó el intento de la tarea, en formato RFC 3339, por ejemplo, 2026-10-02T15:01:23Z. Si no se establece la hora o esta ya pasó, 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 correctamente, el cuerpo de la respuesta contiene la instancia recién creada del recurso 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"
}

¿Qué sigue?