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 un délai pour les tentatives et contrôler l'intervalle entre les tentatives à l'aide de la méthode projects.locations.queues.tasks.create. Une fois une tâche exécutée, elle est supprimée de la file d'attente. Dans tous les cas, la limite de conservation maximale des tâches s'applique également.

Cette configuration des nouvelles tentatives au niveau de la tâche remplace la configuration des nouvelles tentatives 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 paramètres RetryConfig de la ressource Task.

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

  • PROJECT_ID : Obligatoire. ID du projet Google Cloud dans lequel la tâche sera créée.
  • REGION : Obligatoire. La 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'autorisation iam.serviceAccounts.actAs pour le compte de service.

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

  • MAX_ATTEMPTS (facultatif) : Nombre maximal de tentatives pour une tâche, y compris la première. Pour autoriser un nombre illimité de tentatives, 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) : Délai maximal d'une nouvelle tentative d'exécution d'une tâche ayant échoué, mesuré à partir de la première tentative d'exécution de la tâche. 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 d'attente entre les tentatives. La valeur doit être une chaîne se terminant par "s", par exemple 5s.
  • MAX_INTERVAL (facultatif) : Durée maximale d'attente entre les tentatives. La valeur doit être une chaîne se terminant par "s", par exemple 5s.
  • MAX_DOUBLINGS (facultatif) : Nombre maximal de fois où l'intervalle entre les tentatives d'exécution de tâches ayant échoué est 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, puis augmente de manière linéaire, et enfin effectue de nouvelles tentatives à des intervalles de 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 relance sera doublé 3 fois, augmentera de manière linéaire de 2^3 * 10 s, puis sera relancé à des intervalles de MAX_INTERVAL jusqu'à ce que la tâche ait été tentée MAX_ATTEMPTS fois : 10 s, 20 s, 40 s, 80 s, 160 s, 240 s, 300 s, 300 s, etc.

  • 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 l'instance nouvellement créée 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"
}

Étapes suivantes