Cette page explique comment ignorer le délai avant expiration par défaut et une stratégie de nouvelle tentative à l'aide du service bibliothèques clientes.
Les bibliothèques clientes utilisent les paramètres de délai d'expiration et de stratégie de nouvelle tentative définis par défaut dans les fichiers de configuration suivants.
- spanner_grpc_service_config.json
- spanner_admin_instance_grpc_service_config.json
- spanner_admin_database_grpc_service_config.json
Dans les fichiers de configuration, le délai avant expiration par défaut pour les opérations qui durent
(CreateSession
, par exemple) est de 30 secondes. Les opérations plus longues, telles que
comme requêtes ou lectures, ont un délai avant expiration par défaut de 3 600 secondes. Nous vous recommandons d'utiliser
ces paramètres par défaut. Toutefois, vous pouvez définir un délai d'expiration personnalisé ou une règle de nouvelle tentative dans votre
application si nécessaire.
Si vous décidez de modifier le délai, définissez-le sur la quantité réelle l'heure à laquelle l'application est configurée pour attendre le résultat.
Ne configurez pas une stratégie de nouvelle tentative plus agressive que celle par défaut, car un trop grand nombre de tentatives peut surcharger le backend et limiter vos requêtes.
Une stratégie de nouvelle tentative est définie dans chaque extrait, avec les éléments suivants : caractéristiques:
- Un délai d'attente initial, ou de départ, avant de relancer la requête
- Délai maximal.
- Multiplicateur à utiliser avec le temps d'attente précédent pour calculer la prochaine jusqu'à ce que la valeur maximale soit atteinte.
- Ensemble de codes d'erreur pour les nouvelles tentatives d'opérations.
Dans l'exemple suivant, un délai d'expiration de 60 secondes est défini pour l'opération donnée.
Si l'opération dépasse ce délai, elle échoue avec une
DEADLINE_EXCEEDED
erreur.
Si l'opération échoue avec un code d'erreur UNAVAILABLE
, par exemple, s'il existe
est un problème réseau temporaire, l'opération fait l'objet d'une nouvelle tentative. Le client
attend 500 ms avant de lancer la première tentative. Si la première tentative
échoue, le client attend 1,5 * 500 ms = 750 ms avant de démarrer la seconde
réessayez. Ce délai augmente jusqu'à ce que l'opération
réussit ou atteint le délai maximal de nouvelle tentative de 16 secondes. L'opération échoue
avec une erreur DEADLINE_EXCEEDED
si le temps total consacré à l'essai du
l'opération dépasse la valeur totale du délai avant expiration de 60 secondes.