Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Bewährte Methoden für die Verwendung des AWS CLI und SDKs mit Neptune
Standardmäßig laufen die AWS SDKs nach 60 Sekunden ab AWS CLI und versuchen automatisch, fehlgeschlagene Anfragen erneut auszuführen. Bei Abfragen, deren Abschluss länger als 60 Sekunden dauert, führt dieses Standardverhalten zur doppelten Ausführung von Abfragen. Durch den erneuten Versuch wird eine neue Anforderung ausgelöst, während die ursprüngliche Abfrage noch auf dem Server ausgeführt wird.
Wenn Sie Abfragen mit langer Laufzeit über die Neptune-Datenebene-API ausführen (z. B.execute-open-cypher-query), deaktivieren Sie automatische Wiederholungen. Erhöhen oder entfernen Sie auch das Lese-Timeout. Andernfalls wiederholt der Client die Abfrage, während das Original noch ausgeführt wird, wodurch sich die Belastung Ihres Neptune-Clusters verdoppelt.
Die folgenden Empfehlungen gelten für alle Neptune-Datenebenenoperationen, die länger als das standardmäßige 60-Sekunden-Timeout laufen können:
Setzen Sie das Lese-Timeout auf 0 (unendlich) oder einen Wert, der größer ist als die längste erwartete Abfragedauer.
Setzen Sie die maximale Gesamtzahl der Versuche auf 1 (ein Versuch, keine Wiederholungen). Dadurch wird verhindert, dass der Client eine Anfrage, die der Server noch verarbeitet, erneut versucht.
Die folgenden Beispiele zeigen, wie Sie diese Einstellungen für die AWS CLI und beliebte SDKs konfigurieren.
- 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
Der --cli-read-timeout 0 Parameter deaktiviert das Lese-Timeout, sodass sie unbegrenzt AWS CLI auf eine Antwort warten können. Die AWS_MAX_ATTEMPTS=1 Umgebungsvariable legt die Gesamtzahl der maximalen Versuche auf 1 fest, was bedeutet, dass die Anfrage genau einmal ohne Wiederholungen versucht wird.
- 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
)
)
Diese Einstellung read_timeout=None deaktiviert das Lese-Timeout. Die Einstellung total_max_attempts auf 1 bedeutet, dass die Anfrage genau einmal ohne erneute Versuche versucht wird.
- 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();
Die Einstellung apiCallTimeout auf Duration.ZERO konfiguriert ein unendliches Timeout für den API-Aufruf. Durch die Verwendung werden alle RetryPolicy.none() automatischen Wiederholungsversuche deaktiviert.