Muchos métodos de la API de Display & Video 360 realizan operaciones complejas que pueden tardar más de unos segundos en completarse. Las solicitudes a estos métodos a veces pueden superar la latencia esperada, lo que causa errores en la API o en el cliente. En esta página, se enumeran las prácticas para controlar los problemas causados por la latencia de solicitud extendida.
Aumenta el tiempo de espera predeterminado en la biblioteca cliente
Algunos métodos específicos se etiquetaron en su documentación de referencia como que superan con frecuencia la latencia esperada. Otros métodos también podrían mostrar un comportamiento de latencia alta de forma periódica.
Los límites de tiempo de espera predeterminados de algunas bibliotecas cliente podrían generar errores cuando se realizan solicitudes de alta latencia. Los tiempos de espera predeterminados para un subconjunto de bibliotecas cliente compatibles son los siguientes:
- Java: 20 segundos
- Python: 60 segundos
- PHP: 60 segundos
Para evitar los tiempos de espera del cliente, aumenta estos tiempos de espera predeterminados. Sigue estas instrucciones para ajustar el tiempo de espera predeterminado de tu biblioteca cliente durante el tiempo de ejecución:
Java
Importa los recursos necesarios.
import com.google.api.client.http.HttpRequest; import com.google.api.client.http.HttpRequestInitializer; import java.io.IOException;
Crea una función para establecer el tiempo de espera de HTTP.
/** * 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); } }; }
Llama a la función cuando crees el cliente de la API de Display & Video 360.
// 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
Importa el módulo HTTP de la biblioteca cliente de Python de la API de Google.
from googleapiclient import http
Actualiza la constante de tiempo de espera predeterminado.
http.DEFAULT_HTTP_TIMEOUT_SEC = http-timeout-in-seconds
Compila el servicio de API.
# Build the API service. service = discovery.build( 'displayvideo', 'v3', discoveryServiceUrl=discovery_url, credentials=credentials)
PHP
Descarga e instala la biblioteca HTTP de Guzzle con Composer.
composer require guzzlehttp/guzzle:^7.0
Crea un cliente HTTP de Guzzle y asígnale un valor de tiempo de espera.
$httpClient = new \GuzzleHttp\Client(['timeout' => http-timeout-in-seconds]);
Crea el cliente de Google y asigna el cliente HTTP de Guzzle.
$client = new Google_Client(); $client->setHttpClient($httpClient);
Controla los errores de tiempo de espera de la API
En casos excepcionales, las solicitudes que completan operaciones complejas pueden exceder el tiempo de espera del servidor de 180 segundos, lo que hace que la API devuelva una respuesta de error 408
o 504
.
Si una solicitud responde con cualquiera de estos códigos de error, te recomendamos que reintentes estas solicitudes con la estrategia de retirada exponencial.
Si el error persiste, comunícate con el equipo de asistencia mediante el formulario de contacto.