Réessayer d'effectuer les tâches d'envoi en échec

Les tâches d'envoi en cours de traitement via une file d'attente peuvent échouer pour de nombreuses raisons. Si un gestionnaire ne parvient pas à exécuter une tâche (et renvoie donc tout code d'état HTTP en dehors de la plage 200-299), App Engine la relance jusqu'à ce qu'elle aboutisse. Par défaut, le système diminue progressivement le nombre de nouvelles tentatives pour éviter de submerger l'application avec un nombre de requêtes trop important. Toutefois, il programme les nouvelles tentatives à effectuer (une par heure au maximum) jusqu'à ce que la tâche soit exécutée.

Réessayer d'exécuter des tâches

Vous pouvez personnaliser votre propre procédé pour les nouvelles tentatives en ajoutant l'élément retry parameters dans le fichier queue.xml. Ce paramètre supplémentaire vous permet d'indiquer le nombre maximal de nouvelles tentatives d'exécution des tâches ayant échoué dans une file d'attente donnée. Vous pouvez également définir un délai maximal entre chaque tentative et contrôler l'intervalle entre chacune d'elles.

L'exemple suivant illustre divers scénarios de nouvelles tentatives d'exécution :

  • Dans la file d'attente fooqueue, les tâches sont relancées jusqu'à sept fois et jusqu'à deux jours après la première tentative d'exécution. Une fois ces deux limites atteintes, la tâche échoue définitivement.
  • Dans la file d'attente barqueue, App Engine tente de relancer les tâches en augmentant l'intervalle de manière linéaire entre chaque tentative jusqu'à atteindre l'intervalle maximum, puis en relançant indéfiniment des tentatives à l'intervalle maximum (les intervalles entre les requêtes sont donc de 10, 20, 30, ..., 190, 200 secondes, puis toujours 200 secondes).
  • Dans la file d'attente bazqueue, l'intervalle entre les tentatives commence à 10 secondes, puis double trois fois, augmente ensuite de manière linéaire, après quoi les tâches sont relancées indéfiniment à l'intervalle maximum (les intervalles entre les requêtes sont donc de 10, 20, 40, 80, 160, 240, 300 secondes, puis toujours 300 secondes).
<?xml version="1.0" encoding="utf-8"?>
<queue-entries>
  <queue>
    <name>fooqueue</name>
    <rate>1/s</rate>
    <retry-parameters>
      <task-retry-limit>7</task-retry-limit>
      <task-age-limit>2d</task-age-limit>
    </retry-parameters>
  </queue>
  <queue>
    <name>barqueue</name>
    <rate>1/s</rate>
    <retry-parameters>
      <min-backoff-seconds>10</min-backoff-seconds>
      <max-backoff-seconds>200</max-backoff-seconds>
      <max-doublings>0</max-doublings>
    </retry-parameters>
  </queue>
  <queue>
    <name>bazqueue</name>
    <rate>1/s</rate>
    <retry-parameters>
      <min-backoff-seconds>10</min-backoff-seconds>
      <max-backoff-seconds>300</max-backoff-seconds>
      <max-doublings>3</max-doublings>
    </retry-parameters>
  </queue>
</queue-entries>

Étape suivante

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Environnement standard App Engine pour Java