En esta página se muestra cómo anular la configuración predeterminada del tiempo de espera y configurar una política de reintentos mediante las bibliotecas cliente de Spanner.
Las bibliotecas cliente usan ajustes predeterminados de tiempo de espera y de 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 de las operaciones que tardan poco, como CreateSession
, es de 30 segundos. Las operaciones más largas, como las consultas o las lecturas, tienen un tiempo de espera predeterminado de 3600 segundos. Te recomendamos que uses estos valores predeterminados. Sin embargo, puedes definir un tiempo de espera personalizado o una política de reintentos en tu aplicación si es necesario.
Si decides cambiar el tiempo de espera, configúralo con el tiempo real que la aplicación debe esperar para obtener 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 reintentos con las siguientes características:
- Duración del tiempo de espera inicial o de inicio antes de volver a intentar la solicitud.
- Un retraso máximo.
- Multiplicador que se usa con el tiempo de espera anterior para calcular el siguiente tiempo de espera hasta que se alcance el máximo.
- 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 indicada.
Si la operación tarda más que este tiempo de espera, se produce un 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. El cliente espera 500 ms antes de iniciar el primer intento de reenvío. Si el primer reintento falla, el cliente espera 1,5 * 500 ms = 750 ms antes de iniciar el segundo reintento. Este retraso de reintento sigue aumentando hasta que la operación se realiza correctamente o alcanza el retraso de reintento máximo de 16 segundos. La operación falla y se devuelve un error DEADLINE_EXCEEDED
si el tiempo total dedicado a intentar realizar la operación supera el valor de tiempo de espera total de 60 segundos.