Nesta página, mostramos como modificar a configuração de tempo limite padrão e configurar uma política de repetição usando as bibliotecas de cliente do Spanner.
As bibliotecas de cliente usam as configurações de política de tempo limite e repetição padrão, definidas nos arquivos de configuração a seguir.
- spanner_grpc_service_config.json
- spanner_admin_instance_grpc_service_config.json
- spanner_admin_database_grpc_service_config.json
Nos arquivos de configuração, o tempo limite padrão para operações que demoram um pouco
de tempo, como CreateSession
, é de 30 segundos. Operações mais longas, como
como consultas ou leituras, têm um tempo limite padrão de 3.600 segundos. Recomendamos usar
esses padrões. No entanto, é possível definir uma política personalizada de tempo limite ou de novas tentativas
o aplicativo, se necessário.
Se você decidir mudar o tempo limite, defina-o como a quantidade real de tempo que o aplicativo está configurado para aguardar o resultado.
Não configure uma política de repetição mais agressiva do que o padrão, porque muitas tentativas podem sobrecarregar o back-end e limitar suas solicitações.
Uma política de repetição é definida em cada snippet, com as seguintes características:
- O tempo de espera inicial antes de repetir a solicitação.
- Atraso máximo.
- Um multiplicador para usar com o tempo de espera anterior para calcular o próximo tempo de espera, até que o valor máximo seja atingido.
- Um conjunto de códigos de erro para operações de repetição.
Na amostra a seguir, o tempo limite de 60 segundos é definido para a operação determinada.
Se a operação demorar mais do que esse tempo limite, ela falhará
DEADLINE_EXCEEDED
erro.
Se a operação falhar com um código de erro UNAVAILABLE
, por exemplo, se houver
um problema temporário de rede, a operação será repetida. O cliente
espera 500 ms antes de iniciar a primeira tentativa de nova tentativa. Se a primeira repetição
falhar, o cliente vai esperar 1,5 * 500 ms = 750 ms antes de iniciar a segunda
tentativa. Esse atraso de nova tentativa continua aumentando até que a operação
for 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 na tentativa da
operação exceder o valor total de tempo limite de 60 segundos.