Esta página mostra como substituir a configuração de tempo limite predefinida e configurar uma política de repetição através das bibliotecas de cliente do Spanner.
As bibliotecas de cliente usam as definições predefinidas de tempo limite e política de repetição, que estão definidas nos seguintes ficheiros de configuração.
- spanner_grpc_service_config.json
- spanner_admin_instance_grpc_service_config.json
- spanner_admin_database_grpc_service_config.json
Nos ficheiros de configuração, o limite de tempo predefinido para operações que demoram pouco tempo, como CreateSession
, é de 30 segundos. As operações mais longas, como consultas ou leituras, têm um limite de tempo predefinido de 3600 segundos. Recomendamos que use estas predefinições. No entanto, pode definir um limite de tempo personalizado ou uma política de repetição na sua aplicação, se necessário.
Se decidir alterar o limite de tempo, defina-o para o valor real de tempo que a aplicação está configurada para aguardar o resultado.
Não configure uma política de repetição mais agressiva do que a predefinição, porque demasiadas repetições podem sobrecarregar o back-end e limitar as suas solicitações.
Uma política de repetição é definida em cada fragmento, com as seguintes características:
- A duração do tempo de espera inicial, ou de início, antes de tentar novamente o pedido.
- Um atraso máximo.
- Um multiplicador a usar com o tempo de espera anterior para calcular o tempo de espera seguinte, até atingir o máximo.
- Um conjunto de códigos de erro para operações de repetição.
No exemplo seguinte, é definido um limite de tempo de 60 segundos para a operação especificada.
Se a operação demorar mais tempo do que este limite de tempo, a operação falha com um erro DEADLINE_EXCEEDED
.
Se a operação falhar com um código de erro UNAVAILABLE
, por exemplo, se existir um problema de rede temporário, a operação é repetida. O cliente
aguarda 500 ms antes de iniciar a primeira tentativa. Se a primeira nova tentativa falhar, o cliente aguarda 1,5 * 500 ms = 750 ms antes de iniciar a segunda nova tentativa. Este atraso de nova tentativa continua a aumentar até a operação ser bem-sucedida ou atingir o atraso máximo de nova tentativa de 16 segundos. A operação falha com um erro DEADLINE_EXCEEDED
se o tempo total gasto a tentar a operação exceder o valor de tempo limite total de 60 segundos.