Zeitlimits und Wiederholungsversuche konfigurieren

Viele Display & Video 360 API-Methoden führen komplexe Vorgänge aus, die länger als einige Sekunden dauern können. Anfragen an diese Methoden können manchmal die erwartete Latenzzeit überschreiten und zu Fehlern auf API- oder Clientseite führen. Auf dieser Seite finden Sie Informationen zum Umgang mit Problemen, die durch eine lange Anfragelatenz verursacht werden.

Standardzeitüberschreitung in der Clientbibliothek erhöhen

Einige Methoden sind in der Referenzdokumentation als Methoden gekennzeichnet, die regelmäßig die erwartete Latenz überschreiten. Auch bei anderen Methoden kann es zeitweise zu einer hohen Latenz kommen.

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

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

Clientseitige Zeitüberschreitungen können vermieden werden, indem diese Standardzeitüberschreitungen erhöht werden. So passen Sie die Standardzeitüberschreitung für Ihre Clientbibliothek während der Laufzeit an:

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. Guzzle-HTTP-Client erstellen und Zeitlimit zuweisen

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

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

Umgang mit API-Zeitüberschreitungsfehlern

In seltenen Fällen kann die Zeitüberschreitung für serverseitige Anfragen von 180 Sekunden überschritten werden, was dazu führt, dass die API eine Fehlerantwort vom Typ 408 oder 504 zurückgibt.

Wenn eine Anfrage mit einem dieser Fehlercodes beantwortet wird, empfehlen wir, diese Anfragen mit der Strategie des exponentiellen Backoffs zu wiederholen.

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