Configurar tempos limite e novas tentativas

Muitos métodos da API Display & Video 360 realizam operações complexas que podem levar mais de alguns segundos para serem concluídas. Às vezes, as solicitações para esses métodos podem exceder a latência esperada, causando erros na API ou no lado do cliente. Nesta página, listamos as práticas para lidar com problemas causados pela latência de solicitação estendida.

Aumentar o tempo limite padrão na biblioteca de cliente

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

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

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

Os tempos limite do cliente podem ser evitados aumentando esses tempos limite padrão. Siga estas instruções para ajustar o tempo limite padrão da biblioteca de cliente durante o tempo 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. Função de build para definir o tempo limite 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. Chamar a função ao criar o cliente da API 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

  1. Importe o módulo http da biblioteca de cliente Python da API do Google.

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

    http.DEFAULT_HTTP_TIMEOUT_SEC = http-timeout-in-seconds
    
  3. Criar o serviço da 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 o Composer.

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

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

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

Solucionar erros de tempo limite da API

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

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

Se o erro persistir, use o formulário de contato para entrar em contato com o suporte.