Définir les paramètres de nouvelle tentative pour une tâche

Lorsque vous créez une tâche, vous pouvez spécifier le nombre maximal de tentatives pour une tâche ayant échoué, définir une limite de temps pour les tentatives et contrôler l'intervalle entre les tentatives à l'aide de la projects.locations.queues.tasks.create méthode. Une fois qu'une tâche est exécutée, elle est supprimée de la file d'attente. Dans tous les cas, la limite maximale de conservation des tâches s'applique également.

Cette configuration de nouvelle tentative au niveau de la tâche remplace la configuration de nouvelle tentative au niveau de la file d'attente pour la tâche.

Configurer les nouvelles tentatives lors de la création d'une tâche

L'exemple suivant montre comment définir des paramètres de nouvelle tentative lors de la création d'une tâche cible HTTP en envoyant une requête directe à l'API Cloud Tasks. Vous pouvez utiliser les mêmes paramètres de nouvelle tentative lorsque vous créez une tâche App Engine. Pour en savoir plus sur les paramètres, consultez les RetryConfig paramètres de la Task ressource.

Avant d'utiliser l'une des données de requête, effectuez les remplacements suivants :

  • PROJECT_ID : Obligatoire. ID du projet dans lequel la tâche sera créée. Google Cloud
  • REGION : Obligatoire. Région dans laquelle la file d'attente est déployée, par exemple us-central1.
  • QUEUE_ID : Obligatoire. ID de la file d'attente à laquelle la tâche sera ajoutée.
  • URL : Obligatoire. URL complète à laquelle la requête sera envoyée. Cette chaîne doit commencer par http:// ou https://, par exemple : https://www.example.com.
  • SERVICE_ACCOUNT_EMAIL: Facultatif. Adresse e-mail du compte de service utilisé pour générer un jeton d'autorisation inclus dans la requête envoyée à la cible lors de l'exécution de la tâche. Le compte de service doit se trouver dans le même projet que la file d'attente. L'appelant doit disposer de l' iam.serviceAccounts.actAs autorisation pour le compte de service.

    Pour générer un jeton d'accès OAuth2 au lieu d'un jeton OpenID Connect, remplacez le oidcToken champ par oauthToken pour spécifier l'adresse e-mail du compte de service.

  • MAX_ATTEMPTS : Facultatif. Nombre maximal nombre de tentatives pour une tâche, y compris la première. Pour autoriser des tentatives illimitées, définissez cette valeur sur -1. MAX_RETRY_DURATION s'applique toujours même si MAX_ATTEMPTS est atteint ou défini sur -1.
  • MAX_RETRY_DURATION : Facultatif. Durée maximale pour réessayer une tâche ayant échoué, mesurée à partir de la première tentative. La valeur doit être une chaîne qui se termine par "s", telle que 5s. Pour spécifier une durée illimitée, définissez cette valeur sur 0s. MAX_ATTEMPTS s'applique toujours même si MAX_RETRY_DURATION est atteint ou défini sur 0s.
  • MIN_INTERVAL : Facultatif. Délai minimal à attendre entre les tentatives. La valeur doit être une chaîne qui se termine par "s", telle que 5s.
  • MAX_INTERVAL : Facultatif. Délai maximal à attendre entre les tentatives. La valeur doit être une chaîne qui se termine par "s", telle que 5s.
  • MAX_DOUBLINGS : Facultatif. Nombre maximal de fois où l'intervalle entre les tentatives de tâches ayant échoué sera doublé avant que l 'augmentation ne devienne constante. L'intervalle de nouvelle tentative d'une tâche commence à MIN_INTERVAL, puis double MAX_DOUBLINGS fois, augmente ensuite de manière linéaire et de nouvelles tentatives sont effectuées à l'intervalle MAX_INTERVAL jusqu'à MAX_ATTEMPTS fois.

    Par exemple, si MIN_INTERVAL est 10s, MAX_INTERVAL est 300s, et MAX_DOUBLINGS est 3, l'intervalle de nouvelle tentative sera doublé 3 fois, augmentera de manière linéaire de 2^3 * 10s, puis de nouvelles tentatives seront effectuées à l'intervalle MAX_INTERVAL jusqu'à ce que la tâche ait été tentée MAX_ATTEMPTS fois : 10s, 20s, 40s, 80s, 160s, 240s, 300s, 300s, et ainsi de suite.

  • SCHEDULE_TIME : Facultatif. Heure à laquelle la tâche doit être tentée, au format RFC 3339, par exemple, 2026-10-02T15:01:23Z. Si l'heure n'est pas définie ou est passée, Cloud Tasks la définit sur l'heure actuelle.

Corps JSON de la requête :

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

Pour envoyer votre requête, développez l'une des options suivantes :

Si la requête aboutit, le corps de la réponse contient la nouvelle instance de la ressource 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"
}

Étape suivante