Configurar tempos limite e novas tentativas

Vários anúncios de display e Os métodos da API Video 360 realizam operações complexas que podem demorar mais do que alguns segundos. Às vezes, as solicitações para esses métodos podem exceder latência esperada, causando erros na API ou no cliente. Esta página lista práticas para lidar com problemas causados por latência de solicitação estendida.

Aumentar o tempo limite padrão na biblioteca de cliente

Vários métodos específicos foram identificados na documentação de referência. excedendo regularmente a latência esperada. Outros métodos também podem exibir comportamento de alta latência periodicamente.

Os limites de tempo limite padrão para algumas bibliotecas de cliente podem resultar em erros quando fazer solicitações de alta latência. Tempos limite padrão para um subconjunto de clientes compatíveis as bibliotecas são:

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

Para evitar tempos limite no lado do cliente, aumente esses tempos limite padrão. Seguir estas instruções para ajustar o tempo limite padrão de sua biblioteca de cliente durante ambiente de execução:

Java

  1. Importar os recursos necessários.

    import com.google.api.client.http.HttpRequest;
    import com.google.api.client.http.HttpRequestInitializer;
    import java.io.IOException;
    
  2. Criar uma função para definir o tempo limite do 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. Chamar função ao criar o Display & cliente da API 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. Importar o módulo http da biblioteca de cliente Python da API do Google.

    from googleapiclient import http
    
  2. Atualize a constante de tempo limite padrão.

    http.DEFAULT_HTTP_TIMEOUT_SEC = http-timeout-in-seconds
    
  3. Criar um serviço de API.

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

PHP

  1. Faça o download e instale a biblioteca HTTP do Guzzle usando Composer (em inglês).

    composer require guzzlehttp/guzzle:^7.0
    
  2. Criar o cliente HTTP Guzzle, atribuindo o valor do tempo limite.

    $httpClient = new \GuzzleHttp\Client(['timeout' => http-timeout-in-seconds]);
    
  3. Criar um cliente do Google e atribuir o cliente HTTP do Guzzle.

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

Tratar erros de tempo limite da API

Em casos raros, as solicitações que concluírem operações complexas podem exceder o tempo limite do servidor de 180 segundos, fazendo com que a API retorne um 408 ou 504 resposta de erro.

Se uma solicitação responder com qualquer um desses códigos de erro, recomendamos que você repetir essas solicitações usando a estratégia de espera exponencial.

Se o erro persistir, entre em contato com o suporte usando o formulário de contato.