As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Práticas recomendadas para usar o AWS CLI e SDKs com Neptune
Por padrão, os AWS SDKs AWS CLI e atingem o tempo limite após 60 segundos e repete automaticamente as solicitações com falha. Para consultas que demoram mais de 60 segundos para serem concluídas, esse comportamento padrão causa a execução duplicada da consulta. A nova tentativa dispara uma nova solicitação enquanto a consulta original ainda está em execução no servidor.
Ao executar consultas de longa duração por meio da API do plano de dados Neptune (por exemplo,), desative as novas tentativas automáticas. execute-open-cypher-query Além disso, aumente ou remova o tempo limite de leitura. Caso contrário, o cliente tentará novamente a consulta enquanto a original ainda está em execução, o que dobra a carga no cluster do Neptune.
As recomendações a seguir se aplicam a qualquer operação do plano de dados Neptune que possa ser executada por mais tempo do que o tempo limite padrão de 60 segundos:
Defina o tempo limite de leitura como 0 (infinito) ou um valor maior do que a duração da consulta mais longa esperada.
Defina o total máximo de tentativas como 1 (uma tentativa, zero tentativas). Isso impede que o cliente repita uma solicitação que o servidor ainda está processando.
Os exemplos a seguir mostram como definir essas configurações para os AWS CLI SDKs populares.
- AWS CLI
-
export AWS_MAX_ATTEMPTS=1
aws neptunedata execute-open-cypher-query \
--endpoint-url https://your-cluster-endpoint:port \
--open-cypher-query "RETURN 1" \
--cli-read-timeout 0
O --cli-read-timeout 0 parâmetro desativa o tempo limite de leitura, permitindo que eles aguardem indefinidamente por uma resposta. AWS CLI A variável de AWS_MAX_ATTEMPTS=1 ambiente define o total máximo de tentativas como 1, o que significa que a solicitação é tentada exatamente uma vez sem novas tentativas.
- Python (boto3)
-
import boto3
from botocore.config import Config
client = boto3.client(
'neptunedata',
endpoint_url='https://your-cluster-endpoint:port',
region_name='us-east-1',
config=Config(
retries={'total_max_attempts': 1, 'mode': 'standard'},
read_timeout=None
)
)
A configuração read_timeout=None desativa o tempo limite de leitura. total_max_attemptsDefinir como 1 significa que a solicitação é tentada exatamente uma vez, sem novas tentativas.
- Java V2 SDK
-
import software.amazon.awssdk.services.neptunedata.NeptunedataClient;
import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration;
import software.amazon.awssdk.core.retry.RetryPolicy;
import software.amazon.awssdk.regions.Region;
import java.time.Duration;
import java.net.URI;
// Build the Neptune dataplane client with no retries and infinite timeout
NeptunedataClient neptunedataClient = NeptunedataClient.builder()
.endpointOverride(URI.create("https://your-cluster-endpoint:port"))
.region(Region.of("us-east-1"))
.overrideConfiguration(ClientOverrideConfiguration.builder()
.apiCallTimeout(Duration.ZERO)
.retryPolicy(RetryPolicy.none())
.build())
.build();
Configuração apiCallTimeout para Duration.ZERO configurar um tempo limite infinito para a chamada da API. Usar RetryPolicy.none() desativa todas as novas tentativas automáticas.