Nesta página, mostramos como modificar o tempo limite padrão e definir uma política de nova tentativa usando o Spanner bibliotecas de cliente.
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 alterar o tempo limite, defina-o como a quantidade real de o tempo que o aplicativo está configurado para aguardar o resultado.
Não configure uma política de nova tentativa mais agressiva que o padrão. porque muitas tentativas podem sobrecarregar o back-end e limitar suas solicitações.
Uma política de nova tentativa é definida em cada snippet, com os seguintes características:
- O tempo de espera inicial antes de repetir a solicitação.
- Um atraso máximo.
- Um multiplicador para ser usado com o tempo de espera anterior para calcular a próxima espera até atingir o máximo.
- 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
for um problema temporário de rede, será feita uma nova tentativa da operação. O cliente
aguarda 500 ms antes de iniciar a primeira tentativa. Se a primeira tentativa
falhar, o cliente aguardará 1,5 * 500 ms = 750 ms antes de iniciar o segundo
tentar de novo. Esse atraso de nova tentativa continua aumentando até que a operação
for bem-sucedida ou atingir o atraso máximo de repetição de 16 segundos. A operação falha
com um erro DEADLINE_EXCEEDED
se o tempo total gasto na tentativa de
exceder o valor de tempo limite total de 60 segundos.