

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à.

# Facoltativamente, impostare timeout a livello di query
<a name="best-practices-gremlin-java-per-query-timeout"></a>

Neptune offre la possibilità di impostare un timeout per le query utilizzando l'opzione del gruppo di parametri `neptune_query_timeout` (consulta [Parameters](parameters.md)). Puoi anche ignorare il timeout globale, con un codice come questo:

**Nota**  
Le impostazioni del timeout delle query si applicano solo alla valutazione delle query. Le operazioni di controllo delle transazioni basate su bytecode come `tx().commit()` e non `tx().rollback()` sono soggette a timeout di query. Per ulteriori informazioni, consulta [Comportamento di timeout per bytecode, commit e rollback](access-graph-gremlin-transactions.md#access-graph-gremlin-transactions-commit-rollback-timeout).

```
  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();
  }
```

Oppure, per invii di query basati su stringa, l'aspetto del codice è simile al seguente:

```
  RequestOptions options = RequestOptions.build().timeout(500).create();
  List<Result> result = client.submit("g.V()", options).all().get();
```

Se una query supera il timeout per query, Neptune la interrompe. L'eventuale ripetizione di una query scaduta dipende dalla natura dell'errore e dal carico di lavoro. Per le linee guida, consulta [Gestione di eccezioni e nuovi tentativi](transactions-exceptions.md).

**Nota**  
Potrebbero essere applicati costi imprevisti se viene impostato un valore di timeout delle query troppo elevato, in particolare su un'istanza serverless. Se il timeout non è impostato su un valore ragionevole, la query potrebbe continuare a essere eseguita molto più a lungo del previsto, con conseguenti costi imprevisti. Questo è particolarmente vero per un'istanza serverless, che potrebbe aumentare fino a diventare un tipo di istanza di grandi dimensioni e costosa durante l'esecuzione della query.  
Per evitare spese impreviste di questo tipo, specifica un valore di timeout delle query adatto alla maggior parte dei tempi di esecuzione previsti e che causa il timeout solo delle query con tempi di esecuzione insolitamente lunghi.  
 A partire dalla versione 1.3.2.0 del motore Neptune, Neptune supporta un nuovo parametro neptune\$1lab\$1mode come. `StrictTimeoutValidation` Quando questo parametro ha un valore pari a`Enabled`, un valore di timeout per query specificato come opzione di richiesta o suggerimento di interrogazione non può superare il valore impostato globalmente nel gruppo di parametri. In tal caso, Nettuno lancerà. `InvalidParameterException`   
 Questa impostazione può essere confermata in una risposta sull'endpoint '/status' quando il valore è. `Disabled` Nella versione del motore`1.3.2.0`, il valore predefinito di questo parametro è. `Disabled` A partire dalla versione del motore`1.4.0.0`, il `StrictTimeoutValidation` parametro è quello `Enabled` predefinito.   
 Per ulteriori informazioni su come viene determinata la precedenza dei timeout quando vengono configurate più impostazioni di timeout, consultate la documentazione del parametro [neptune\$1query\$1timeout](parameters.md#parameters-db-cluster-parameters-neptune_query_timeout). 