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.
Opcionalmente, establezca tiempos de espera al nivel de consulta
Neptune ofrece la posibilidad de definir un tiempo de espera para sus consultas con la opción de grupo de parámetros neptune_query_timeout (consulte Parameters). También puede anular el tiempo de espera global con un código como este:
nota
La configuración del tiempo de espera de las consultas solo se aplica a la evaluación de las consultas. Las operaciones de control de transacciones basadas en códigos de bytes, por ejemplo, no tx().rollback() están sujetas a tx().commit() tiempos de espera de consulta. Para obtener más información, consulte Comportamiento del tiempo de espera para confirmar y revertir el código de bytes.
final Cluster cluster = Cluster.build("localhost") .port(8182) .maxInProcessPerConnection(32) .maxSimultaneousUsagePerConnection(32) .serializer(Serializers.GRAPHBINARY_V1D0) .create(); try { final GraphTraversalSource g = traversal().withRemote(DriverRemoteConnection.using(cluster)); List<Object> verticesWithNamePumba = g.with(ARGS_EVAL_TIMEOUT, 500L).V().has("name", "pumba").out("friendOf").id().toList(); System.out.println(verticesWithNamePumba); } finally { cluster.close(); }
O bien, para envío de consultas basado en cadenas, el código sería el siguiente:
RequestOptions options = RequestOptions.build().timeout(500).create(); List<Result> result = client.submit("g.V()", options).all().get();
Si una consulta supera el tiempo de espera por consulta, Neptune la finaliza. La posibilidad de volver a intentar una consulta que ha agotado el tiempo de espera depende de la naturaleza del error y de la carga de trabajo. Para obtener instrucciones, consulte Control de excepciones y reintentos.
nota
Es posible incurrir en costos inesperados si se establece un valor de tiempo de espera de consulta demasiado alto, especialmente en una instancia sin servidor. Si la configuración del tiempo de espera no es razonable, es posible que la consulta siga ejecutándose durante mucho más tiempo del esperado, lo que dará lugar a costos que no había previsto. Esto ocurre especialmente en una instancia sin servidor que podría escalarse verticalmente hasta convertirse en un tipo de instancia grande y caro mientras se ejecuta la consulta.
Puede evitar gastos inesperados de este tipo si utiliza un valor de tiempo de espera de consulta que se adapte al tiempo de ejecución esperado y que solo provoque un tiempo de espera inusualmente largo.
A partir de la versión 1.3.2.0 del motor de Neptune, Neptune admite un nuevo parámetro neptune_lab_mode como StrictTimeoutValidation. Cuando este parámetro tiene el valor Enabled, el valor de tiempo de espera por consulta especificado como una opción de solicitud o una sugerencia de consulta no puede superar el valor establecido globalmente en el grupo de parámetros. En tal caso, Neptune generará una excepción InvalidParameterException.
Esta configuración se puede confirmar en una respuesta en el punto final «/status» cuando el valor es. Disabled En la versión de motor1.3.2.0, el valor por defecto de este parámetro esDisabled. A partir de la versión de motor1.4.0.0, el StrictTimeoutValidation parámetro es Enabled el predeterminado.
Para obtener más información sobre cómo se determina la prioridad del tiempo de espera cuando se configuran varios ajustes de tiempo de espera, consulte la documentación del parámetro neptune_query_timeout.