Configurare timeout e nuovi tentativi

Molti display e I metodi dell'API Video 360 eseguono operazioni complesse che potrebbero richiedere più tempo di alcuni secondi. Le richieste a questi metodi a volte possono superare la latenza prevista, con errori a livello di API o client. In questa pagina sono elencati i per la gestione dei problemi causati dalla latenza estesa delle richieste.

Aumenta il timeout predefinito nella libreria client

Alcuni metodi specifici sono stati etichettati nella loro documentazione di riferimento superando regolarmente la latenza prevista. Anche altri metodi potrebbero presentare un comportamento ad alta latenza.

I limiti di timeout predefiniti per alcune librerie client possono causare errori quando per effettuare richieste ad alta latenza. Timeout predefiniti per un sottoinsieme di client supportati librerie sono:

  • Java: 20 secondi
  • Python: 60 secondi
  • PHP: 60 secondi

I timeout lato client possono essere evitati aumentando i timeout predefiniti. Segui queste istruzioni per regolare il timeout predefinito per la libreria client durante Tempo di esecuzione:

Java

  1. Importa le risorse necessarie.

    import com.google.api.client.http.HttpRequest;
    import com.google.api.client.http.HttpRequestInitializer;
    import java.io.IOException;
    
  2. Funzione di creazione per l'impostazione del timeout HTTP.

    /**
     * Adjusts HTTP timeout values used by the provided request initializer.
     *
     * @param requestInitializer The {@link HttpRequestInitializer} used to authorize requests.
     * @param newHttpTimeout The HTTP timeout for requests in seconds.
     * @return An {@link HttpRequestInitializer} with modified HTTP timeout values.
     */
    private static HttpRequestInitializer setHttpTimeout(
        final HttpRequestInitializer requestInitializer,
        final int newHttpTimeout) {
      return new HttpRequestInitializer() {
        @Override
        public void initialize(HttpRequest httpRequest) throws IOException {
          requestInitializer.initialize(httpRequest);
          httpRequest.setConnectTimeout(newHttpTimeout * 1_000);
          httpRequest.setReadTimeout(newHttpTimeout * 1_000);
        }
      };
    }
    
  3. Richiama la funzione durante la creazione dell'interfaccia Client API Video 360.

    // Create authorized API client with non-default timeouts.
    DisplayVideo service =
        new DisplayVideo.Builder(
            credential.getTransport(),
            credential.getJsonFactory(),
            setHttpTimeout(credential, http-timeout-in-seconds)
        )
            .setApplicationName("displayvideo-java-installed-app-sample")
            .build();
    

Python

  1. Importa il modulo http della libreria client Python dell'API di Google.

    from googleapiclient import http
    
  2. Aggiorna la costante di timeout predefinita.

    http.DEFAULT_HTTP_TIMEOUT_SEC = http-timeout-in-seconds
    
  3. Servizio API Build.

    # Build the API service.
    service = discovery.build(
      'displayvideo',
      'v3',
      discoveryServiceUrl=discovery_url,
      credentials=credentials)
    

PHP

  1. Scarica e installa la libreria HTTP Guzzle utilizzando Composer.

    composer require guzzlehttp/guzzle:^7.0
    
  2. Crea un client HTTP Guzzle, assegnando un valore di timeout.

    $httpClient = new \GuzzleHttp\Client(['timeout' => http-timeout-in-seconds]);
    
  3. Crea il client Google e assegna il client HTTP Guzzle.

    $client = new Google_Client();
    $client->setHttpClient($httpClient);
    

Gestire gli errori di timeout dell'API

In rari casi, le richieste che completano operazioni complesse potrebbero superare timeout lato server di 180 secondi, con il quale l'API restituisce un valore 408 o 504 risposta di errore.

Se una richiesta risponde con uno di questi codici di errore, ti consigliamo di riprova a eseguire queste richieste utilizzando la strategia di backoff esponenziale.

Se l'errore persiste, contatta l'assistenza utilizzando il modulo di contatto.