En esta página, se muestra cómo anular la configuración de tiempo de espera predeterminada y establecer una política de reintentos con las bibliotecas cliente de Spanner.
Las bibliotecas cliente usan la configuración predeterminada del tiempo de espera y de la política de reintentos que se definen 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 un período breve, como CreateSession
, es de 30 segundos. Las operaciones más largas, como las consultas o las lecturas, tienen un tiempo de espera predeterminado de 3,600 segundos. Te recomendamos que uses estos valores predeterminados. Sin embargo, puedes establecer un tiempo de espera personalizado o una política de reintento en tu aplicación si es necesario.
Si decides cambiar el tiempo de espera, configúralo en la cantidad de tiempo real que la aplicación está configurada para esperar el resultado.
No configures una política de reintentos que sea más agresiva que la predeterminada, ya que demasiados reintentos podrían sobrecargar el backend y limitar tus solicitudes.
Se define una política de reintentos en cada fragmento con las siguientes características:
- Duración de tiempo de espera inicial antes de reintentar la solicitud.
- Una demora máxima.
- Un multiplicador para usar con el tiempo de espera anterior a fin de calcular el próximo tiempo de espera, hasta que se alcance 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 que este tiempo de espera, fallará y mostrará el error DEADLINE_EXCEEDED
.
Si la operación falla con un código de error UNAVAILABLE
, por ejemplo, si hay un problema de red transitorio, se vuelve a intentar la operación. El cliente espera 500 ms antes de iniciar el primer reintento. Si el primer reintento falla, el cliente espera 1.5 * 500 ms = 750 ms antes de iniciar el segundo reintento. Esta demora de reintento continúa aumentando hasta que la operación se realiza correctamente o alcanza el retraso máximo de reintento de 16 segundos. La operación falla con el error DEADLINE_EXCEEDED
si el tiempo total dedicado a intentar la operación supera el valor de tiempo de espera total de 60 segundos.