

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

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.

**Wichtig**  
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.

------