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 levam pouco tempo, como CreateSession, é de 30 segundos. Operações mais longas, como consultas ou leituras, têm um tempo limite padrão de 3.600 segundos. Recomendamos o uso desses padrões. No entanto, é possível definir um tempo limite personalizado ou uma política de repetição no aplicativo, se necessário.
Se você decidir alterar o tempo limite, defina-o como o tempo real 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 repetições 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.
- Um atraso máximo.
- Um multiplicador a ser usado 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 levar mais tempo do que esse tempo limite, ela falhará com um erro DEADLINE_EXCEEDED.
Se a operação falhar com um código de erro UNAVAILABLE, por exemplo, se houver um problema de rede temporário, a operação será repetida. O cliente aguarda 500 ms antes de iniciar a primeira tentativa de repetição. Se a primeira repetição falhar, o cliente aguardará 1,5 * 500 ms = 750 ms antes de iniciar a segunda repetição. Esse atraso de repetição continua aumentando até que a operação seja bem-sucedida ou atinja 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 da operação exceder o valor total do tempo limite de 60 segundos.