

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
<a name="best-practices-cli-sdk"></a>

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.

**Importante**  
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_attempts`Definir 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.

------