Configura tiempos de espera y reintentos

Muchos anuncios gráficos y Los métodos de la API de Video 360 realizan operaciones complejas que podrían 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 de la API o del cliente. En esta página, se enumeran para manejar problemas causados por la latencia de solicitud extendida.

Aumenta el tiempo de espera predeterminado en la biblioteca cliente

Se etiquetaron varios métodos específicos en su documentación de referencia. ya que exceden con regularidad la latencia esperada. Otros métodos también podrían mostrar el comportamiento de latencia alta de forma periódica.

Los límites de tiempo de espera predeterminados para algunas bibliotecas cliente podrían generar errores cuando y hacer solicitudes de latencia alta. Tiempos de espera predeterminados para un subconjunto de clientes compatibles bibliotecas son las siguientes:

  • Java: 20 segundos
  • Python: 60 segundos
  • PHP: 60 segundos

Los tiempos de espera del cliente se pueden evitar si aumentas estos tiempos de espera predeterminados. Seguir estas instrucciones para ajustar el tiempo de espera predeterminado de tu biblioteca cliente durante tiempo de ejecución:

Java

  1. Importa los recursos necesarios.

    import com.google.api.client.http.HttpRequest;
    import com.google.api.client.http.HttpRequestInitializer;
    import java.io.IOException;
    
  2. Función de compilación para configurar 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);
        }
      };
    }
    
  3. Llamar a la función cuando se crean las campañas de Display y Cliente de la API de 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

  1. Importa el módulo HTTP de la biblioteca cliente de Python de la API de Google.

    from googleapiclient import http
    
  2. Actualiza la constante de tiempo de espera predeterminada.

    http.DEFAULT_HTTP_TIMEOUT_SEC = http-timeout-in-seconds
    
  3. Compilación del servicio de API.

    # Build the API service.
    service = discovery.build(
      'displayvideo',
      'v3',
      discoveryServiceUrl=discovery_url,
      credentials=credentials)
    

PHP

  1. Descarga e instala la biblioteca HTTP de Guzzle usando Composer.

    composer require guzzlehttp/guzzle:^7.0
  2. Crea el cliente HTTP Guzzle y asigna un valor de tiempo de espera.

    $httpClient = new \GuzzleHttp\Client(['timeout' => http-timeout-in-seconds]);
    
  3. Crea el cliente de Google y asigna el cliente HTTP Guzzle.

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

Maneja errores de tiempo de espera de la API

En casos excepcionales, las solicitudes que completan operaciones complejas podrían superar el Se agotó el tiempo de espera del servidor de 180 segundos, lo que hace que la API muestre un 408 o 504. respuesta de error.

Si una solicitud responde con cualquiera de estos códigos de error, te recomendamos que vuelve a intentar estas solicitudes con la estrategia de retirada exponencial.

Si el error persiste, comunícate con el equipo de asistencia a través del formulario de contacto.