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
Erforderliche Ressourcen importieren
import com.google.api.client.http.HttpRequest; import com.google.api.client.http.HttpRequestInitializer; import java.io.IOException;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); } }; }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
Google API-Clientbibliothek für Python-HTTP-Modul importieren
from googleapiclient import httpStandard-Zeitlimitkonstante aktualisieren:
http.DEFAULT_HTTP_TIMEOUT_SEC = http-timeout-in-secondsAPI-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.0Guzzle-HTTP-Client erstellen und Zeitlimitwert zuweisen
$httpClient = new \GuzzleHttp\Client(['timeout' => http-timeout-in-seconds]);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.