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
Importieren Sie die erforderlichen Ressourcen.
import com.google.api.client.http.HttpRequest; import com.google.api.client.http.HttpRequestInitializer; import java.io.IOException;
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); } }; }
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
Importieren Sie das HTTP-Modul der Google API-Python-Clientbibliothek.
from googleapiclient import http
Standardzeitlimitkonstante aktualisieren.
http.DEFAULT_HTTP_TIMEOUT_SEC = http-timeout-in-seconds
API-Dienst erstellen.
# Build the API service. service = discovery.build( 'displayvideo', 'v3', discoveryServiceUrl=discovery_url, credentials=credentials)
PHP
Laden Sie die Guzzle-HTTP-Bibliothek mit Composer herunter und installieren Sie sie.
composer require guzzlehttp/guzzle:^7.0
Erstellen Sie einen Guzzle-HTTP-Client und weisen Sie einen Zeitüberschreitungswert zu.
$httpClient = new \GuzzleHttp\Client(['timeout' => http-timeout-in-seconds]);
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.