En esta página, se muestra cómo anular la configuración predeterminada del tiempo de espera y configurar una política de reintento con las bibliotecas cliente de Spanner.
Las bibliotecas cliente usan la configuración predeterminada de tiempo de espera y reintento de la política, que se define en los siguientes archivos de configuración.
- spanner_grpc_service_config.json
- spanner_admin_instance_grpc_service_config.json
- spanner_admin_database_grpc_service_config.json
En los archivos de configuración, el tiempo de espera predeterminado para las operaciones que tardan poco, como CreateSession
, es de 30 segundos. Las operaciones más largas, como
consultas o lecturas, tienen un tiempo de espera predeterminado de 3600 segundos. Te recomendamos que uses estos valores predeterminados. Sin embargo, puedes establecer un tiempo de espera personalizado o una política de reintentos en
la aplicación si es necesario.
Si decides cambiar el tiempo de espera, debes establecerlo en el tiempo real en el cual la aplicación está configurada para esperar el resultado.
No configures una política de reintentos más agresiva que la predeterminada, ya que demasiados reintentos podrían sobrecargar el backend y limitar tus solicitudes.
En cada fragmento, se define una política de reintento con las siguientes características:
- Duración de tiempo de espera inicial antes de reintentar la solicitud.
- Un retraso máximo.
- Es un multiplicador que se usa con el tiempo de espera anterior para calcular el siguiente tiempo de espera hasta que se alcanza el máximo.
- Un conjunto de códigos de error para las operaciones de reintento.
En el siguiente ejemplo, se establece un tiempo de espera de 60 segundos para la operación determinada.
Si la operación tarda más de este tiempo de espera, la operación falla y muestra
DEADLINE_EXCEEDED
error.
Si la operación falla con un código de error UNAVAILABLE
, por ejemplo, si hay un problema transitorio de red, se vuelve a intentar la operación. El cliente espera 500 ms antes de iniciar el primer intento de reintento. Si el primer reintento
falla, el cliente espera 1.5 * 500 ms = 750 ms antes de iniciar el segundo
vuelve a intentarlo. Esta demora de reintento continúa aumentando hasta que la operación se realiza correctamente o alcanza la demora máxima de reintento de 16 segundos. La operación falla con un error DEADLINE_EXCEEDED
si el tiempo total que se dedica a intentar la operación supera el valor total de tiempo de espera de 60 segundos.