Stratégie de répétition de traitement

Stratégie de nouvelle tentative

Plusieurs raisons peuvent expliquer l'échec des opérations gsutil. Certaines ne peuvent pas faire l'objet d'une nouvelle tentative et nécessitent que l'utilisateur effectue une action. Exemples :

  • Identifiants incorrects
  • Réseau inaccessible en raison d'un problème de configuration du proxy
  • Accès refusé, car le bucket ou l'objet que vous essayez d'utiliser possède une LCA qui n'autorise pas l'action que vous voulez effectuer
  • Opérations individuelles qui échouent dans une commande exécutant des opérations en parallèle (c'est-à-dire des commandes utilisant l'option de niveau supérieur -m)

Dans d'autres cas, les erreurs sont renouvelables : échecs temporaires de connexion au réseau, codes d'erreur HTTP 429 et 5xx, codes d'erreur HTTP 408 lors d'une importation avec reprise. Si tel est le cas, gsutil effectue une nouvelle tentative à l'aide d'une stratégie d'intervalle exponentiel entre les tentatives définie dans un binaire tronqué :

  • Attendez entre [0..1] seconde, puis effectuez une nouvelle tentative.
  • Si cette opération échoue, attendez entre [0..2] secondes, puis effectuez une nouvelle tentative.
  • Si cette opération échoue, attendez entre [0..4] secondes, puis effectuez une nouvelle tentative.
  • Poursuivez ainsi jusqu'à atteindre le nombre maximal de nouvelles tentatives (23 par défaut).

Chaque période de répétition est limitée par une période maximale configurable (60 secondes par défaut).

Ainsi, par défaut, gsutil effectue 23 nouvelles tentatives sur une période de 1 + 2 + 4 + 8 + 16 + 32 + 60... secondes pendant environ 10 minutes. Vous pouvez ajuster le nombre de nouvelles tentatives et le délai maximal de chacune d'elles en modifiant les variables de configuration num_retries et max_retry_delay dans la section "[Boto]" du fichier de configuration .boto. Dans la plupart des cas, ces valeurs n'ont pas besoin d'être modifiées.

Pour les transferts de données (commandes gsutil cp et rsync), gsutil fournit une autre fonctionnalité de nouvelle tentative, sous la forme de transferts avec reprise. En résumé, un transfert interrompu en raison d'une erreur temporaire peut être relancé sans tout recommencer à zéro. Pour en savoir plus à ce sujet, consultez la section "Transferts avec reprise" sur la page consacrée à gsutil help cp.