Configurer des délais avant expiration et de nouvelles tentatives

Nombreuses options d'affichage Les méthodes de l'API Video 360 effectuent des opérations complexes qui peuvent prendre plus de temps quelques secondes. Les requêtes envoyées à ces méthodes peuvent parfois dépasser la latence attendue, ce qui entraîne des erreurs côté API ou côté client. Cette page répertorie de gestion des problèmes causés par une latence étendue des requêtes.

Augmenter le délai avant expiration par défaut dans la bibliothèque cliente

Quelques méthodes spécifiques ont été étiquetées dans la documentation de référence comme un dépassement régulier de la latence attendue. D'autres méthodes peuvent également présenter régulièrement à latence élevée.

Les délais avant expiration par défaut de certaines bibliothèques clientes peuvent entraîner des erreurs lorsque l'envoi de requêtes à latence élevée. Délais avant expiration par défaut pour un sous-ensemble de clients compatibles sont les suivantes:

  • Java: 20 secondes
  • Python: 60 secondes
  • PHP: 60 secondes

Les délais d'inactivité côté client peuvent être évités en augmentant ces délais par défaut. Suivre ces instructions pour ajuster le délai avant expiration par défaut de votre bibliothèque cliente pendant d'exécution:

Java

  1. Importez les ressources nécessaires.

    import com.google.api.client.http.HttpRequest;
    import com.google.api.client.http.HttpRequestInitializer;
    import java.io.IOException;
    
  2. Fonction de compilation permettant de définir le délai avant expiration 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. Appeler la fonction lors de la création de l'élément Display & 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. Importez le module HTTP de la bibliothèque cliente Python de l'API Google.

    from googleapiclient import http
    
  2. Mettre à jour la constante du délai avant expiration par défaut

    http.DEFAULT_HTTP_TIMEOUT_SEC = http-timeout-in-seconds
    
  3. Service d'API de compilation.

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

PHP

  1. Télécharger et installer la bibliothèque HTTP Guzzle à l'aide de Composer.

    composer require guzzlehttp/guzzle:^7.0
    
  2. Créer un client HTTP Guzzle en attribuant une valeur de délai avant expiration.

    $httpClient = new \GuzzleHttp\Client(['timeout' => http-timeout-in-seconds]);
    
  3. Créez un client Google et attribuez-lui le client HTTP Guzzle.

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

Gérer les erreurs d'expiration de l'API

Dans de rares cas, les requêtes effectuant des opérations complexes peuvent dépasser le un délai avant expiration côté serveur de 180 secondes entraînant le renvoi d'une réponse 408 ou 504 par l'API .

Si une requête répond avec l'un de ces codes d'erreur, nous vous recommandons relancer ces requêtes en utilisant la stratégie d'intervalle exponentiel entre les tentatives ;

Si l'erreur persiste, contactez l'assistance à l'aide du formulaire de contact.