Zeitüberschreitungen und Wiederholungsversuche

Einige API-Methoden führen komplexe Aufgaben aus, die länger als einige Sekunden dauern können. Diese Anfragen können länger dauern als die Standardeinstellungen zulassen. Dies kann zu Fehlern auf API- oder Clientseite führen. So können Sie Probleme vermeiden, die durch eine längere Latenz bei Anfragen verursacht werden.

Standard-Zeitüberschreitung in Clientbibliothek erhöhen

Bei einigen Methoden ist die Latenzzeit oft hoch. Dies ist auf der Referenzseite der Methode angegeben. Auch bei anderen Methoden kann es in seltenen Fällen zu einer hohen Latenz kommen.

Einige Clientbibliotheken haben standardmäßige Zeitüberschreitungslimits. Diese Limits führen zu Fehlern, wenn Anfragen eine hohe Latenz haben. Die Standardzeitüberschreitungen für einige der unterstützten Clientbibliotheken sind:

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

Erhöhen Sie diese Standardlimits, um clientseitige Fehler zu vermeiden. So ändern Sie das Standard-Zeitlimit für Ihre Clientbibliothek:

Java

  1. Erforderliche Ressourcen importieren

    import com.google.api.client.http.HttpRequest;
    import com.google.api.client.http.HttpRequestInitializer;
    import java.io.IOException;
    
  2. Funktion zum Festlegen des HTTP-Time-outs 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. Google API-Clientbibliothek für Python-HTTP-Modul importieren

    from googleapiclient import http
    
  2. Standard-Zeitlimitkonstante 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 Zeitlimitwert zuweisen

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

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

API-Zeitüberschreitungsfehler behandeln

In seltenen Fällen kann es vorkommen, dass Anfragen das Server-Zeitlimit von 180 Sekunden überschreiten. In diesem Fall gibt die API einen 408- oder 504-Fehler zurück.

Wenn eine Anfrage mit einem dieser Codes beantwortet wird, wiederholen Sie die Anfrage mit exponentiellem Backoff.

Wenn der Fehler weiterhin auftritt, wenden Sie sich an den API-Support.