Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Le migliori pratiche per l'utilizzo di AWS CLI e SDK con Neptune
Per impostazione predefinita, gli AWS SDK AWS CLI e scadono dopo 60 secondi e riprovano automaticamente le richieste non riuscite. Per le query che richiedono più di 60 secondi per essere completate, questo comportamento predefinito causa l'esecuzione di query duplicate. Il nuovo tentativo genera una nuova richiesta mentre la query originale è ancora in esecuzione sul server.
Quando esegui query di lunga durata tramite l'API dataplane Neptune (ad esempio,), disabilita i tentativi automatici. execute-open-cypher-query Inoltre, aumenta o rimuovi il timeout di lettura. Altrimenti, il client riprova la query mentre l'originale è ancora in esecuzione, il che raddoppia il carico sul cluster Neptune.
I seguenti consigli si applicano a qualsiasi operazione del dataplane di Neptune che può essere eseguita più a lungo del timeout predefinito di 60 secondi:
Imposta il timeout di lettura su 0 (infinito) o su un valore maggiore della durata della query più lunga prevista.
Imposta il numero massimo di tentativi totali su 1 (un tentativo, zero tentativi). Ciò impedisce al client di ritentare una richiesta che il server sta ancora elaborando.
Gli esempi seguenti mostrano come configurare queste impostazioni per gli AWS CLI SDK più diffusi.
- 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
Il --cli-read-timeout 0 parametro disabilita il timeout di lettura, permettendo di attendere una AWS CLI risposta all'infinito. La variabile di AWS_MAX_ATTEMPTS=1 ambiente imposta il numero massimo di tentativi totali su 1, il che significa che la richiesta viene provata esattamente una volta senza alcun nuovo tentativo.
- 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
)
)
L'impostazione read_timeout=None disabilita il timeout di lettura. L'impostazione total_max_attempts su 1 significa che la richiesta viene provata esattamente una volta senza alcun nuovo tentativo.
- 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();
L'impostazione apiCallTimeout su Duration.ZERO configura un timeout infinito per la chiamata API. L'utilizzo RetryPolicy.none() disattiva tutti i tentativi automatici.