Zeitlimits und Wiederholungsversuche konfigurieren

Viele Display & Video 360 API-Methoden führen komplexe Vorgänge aus, die unter Umständen länger als ein paar Sekunden dauern. Anfragen an diese Methoden können manchmal die erwartete Latenz überschreiten und zu API- oder clientseitigen Fehlern führen. Auf dieser Seite werden Best Practices für die Behebung von Problemen aufgeführt, die durch eine längere Anfragelatenz verursacht werden.

Standardzeitlimit in der Clientbibliothek erhöhen

In der Referenzdokumentation wurde für eine Reihe bestimmter Methoden angegeben, dass diese die erwartete Latenz regelmäßig überschreiten. Andere Methoden könnten auch regelmäßig ein hohes Latenzverhalten aufweisen.

Die Standardzeitlimits einiger Clientbibliotheken können bei Anfragen mit hoher Latenz zu Fehlern führen. Standardzeitlimits für einen Teil der unterstützten Clientbibliotheken sind:

  • Java: 20 Sekunden
  • Python: 60 Sekunden
  • PHP: 60 Sekunden

Clientseitige Zeitüberschreitungen können durch Erhöhen dieser Standardzeitüberschreitungen vermieden werden. Folgen Sie dieser Anleitung, um das Standardzeitlimit für Ihre Clientbibliothek während der Laufzeit anzupassen:

Java

  1. Importieren Sie die erforderlichen Ressourcen.

    import com.google.api.client.http.HttpRequest;
    import com.google.api.client.http.HttpRequestInitializer;
    import java.io.IOException;
    
  2. Funktion zum Festlegen des HTTP-Zeitlimits erstellen.

    /**
     * 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. Funktion beim Erstellen des Display & Video 360 API-Clients aufrufen

    // 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. Importieren Sie das HTTP-Modul der Google API-Python-Clientbibliothek.

    from googleapiclient import http
    
  2. Standardzeitlimitkonstante aktualisieren.

    http.DEFAULT_HTTP_TIMEOUT_SEC = http-timeout-in-seconds
    
  3. API-Dienst erstellen.

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

PHP

  1. Laden Sie die Guzzle-HTTP-Bibliothek mit Composer herunter und installieren Sie sie.

    composer require guzzlehttp/guzzle:^7.0
    
  2. Erstellen Sie einen Guzzle-HTTP-Client und weisen Sie einen Zeitüberschreitungswert zu.

    $httpClient = new \GuzzleHttp\Client(['timeout' => http-timeout-in-seconds]);
    
  3. Erstelle einen Google-Client und weise einen Guzzle-HTTP-Client zu.

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

API-Zeitüberschreitungsfehler beheben

In seltenen Fällen können Anfragen, bei denen komplexe Vorgänge abgeschlossen werden, das serverseitige Zeitlimit von 180 Sekunden überschreiten, wodurch die API die Fehlerantwort 408 oder 504 zurückgibt.

Wenn eine Anfrage mit einem dieser Fehlercodes antwortet, sollten Sie die Anfragen unter Verwendung der exponentiellen Backoff-Strategie noch einmal senden.

Wenn der Fehler weiterhin auftritt, wenden Sie sich über das Kontaktformular an den Support.