Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Mejores prácticas para usar el AWS CLI y SDK con Neptune
De forma predeterminada, los AWS SDK AWS CLI y los SDK se agotan después de 60 segundos y reintentan automáticamente las solicitudes fallidas. En el caso de las consultas que tardan más de 60 segundos en completarse, este comportamiento predeterminado provoca una ejecución de consultas duplicada. El reintento desencadena una nueva solicitud mientras la consulta original aún se está ejecutando en el servidor.
Cuando ejecute consultas de larga duración a través de la API del plano de datos de Neptune (por ejemploexecute-open-cypher-query,), desactive los reintentos automáticos. Aumente o elimine también el tiempo de espera de lectura. De lo contrario, el cliente vuelve a intentar la consulta mientras la original aún se está ejecutando, lo que duplica la carga en el clúster de Neptune.
Las siguientes recomendaciones se aplican a cualquier operación del plano de datos de Neptune que pueda ejecutarse durante más tiempo que el tiempo de espera predeterminado de 60 segundos:
Establezca el tiempo de espera de lectura en 0 (infinito) o en un valor superior a la duración máxima esperada de la consulta.
Establece el número máximo total de intentos en 1 (un intento, cero reintentos). Esto impide que el cliente vuelva a intentar una solicitud que el servidor aún está procesando.
Los siguientes ejemplos muestran cómo configurar estos ajustes para los SDK AWS CLI y los más 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
El --cli-read-timeout 0 parámetro desactiva el tiempo de espera de lectura, lo que permite AWS CLI esperar indefinidamente una respuesta. La variable de AWS_MAX_ATTEMPTS=1 entorno establece el número máximo total de intentos en 1, lo que significa que la solicitud se intenta exactamente una vez sin reintentos.
- 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
)
)
La configuración read_timeout=None desactiva el tiempo de espera de lectura. Si total_max_attempts se establece en, 1 significa que la solicitud se intenta exactamente una vez sin reintentos.
- 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();
Si apiCallTimeout se Duration.ZERO configura para configurar un tiempo de espera infinito para la llamada a la API. El uso RetryPolicy.none() desactiva todos los reintentos automáticos.