Muitos métodos da API Display & Video 360 realizam operações complexas que podem levar mais do que 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. Esta página lista práticas para lidar com problemas causados pela latência de solicitação estendida.
Aumento do tempo limite padrão na biblioteca de cliente
Alguns métodos específicos foram rotulados na documentação de referência como excedendo regularmente a latência esperada. Outros métodos também podem apresentar comportamento de alta latência periodicamente.
Os limites de tempo limite padrão para algumas bibliotecas de cliente podem resultar em erros ao fazer solicitações de alta latência. Os tempos limite padrão para um subconjunto de bibliotecas de cliente com suporte são:
- Java: 20 segundos
- Python: 60 segundos
- PHP: 60 segundos
É possível evitar os limites de tempo do lado do cliente aumentando esses limites padrão. Siga estas instruções para ajustar o tempo limite padrão da biblioteca de cliente durante a execução:
Java
Importe os recursos necessários.
import com.google.api.client.http.HttpRequest; import com.google.api.client.http.HttpRequestInitializer; import java.io.IOException;
Crie uma função para definir o tempo limite 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); } }; }
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
Importar o módulo HTTP da biblioteca de cliente Python da API do Google.
from googleapiclient import http
Atualização da constante de tempo limite padrão.
http.DEFAULT_HTTP_TIMEOUT_SEC = http-timeout-in-seconds
Crie um serviço de API.
# Build the API service. service = discovery.build( 'displayvideo', 'v3', discoveryServiceUrl=discovery_url, credentials=credentials)
PHP
Faça o download e instale a biblioteca HTTP do Guzzle usando o Composer.
composer require guzzlehttp/guzzle:^7.0
Criar um cliente HTTP do Guzzle, atribuindo o valor do tempo limite.
$httpClient = new \GuzzleHttp\Client(['timeout' => http-timeout-in-seconds]);
Crie o cliente do Google e atribua o cliente HTTP do Guzzle.
$client = new Google_Client(); $client->setHttpClient($httpClient);
Processar erros de tempo limite da API
Em casos raros, as solicitações que concluem 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 novamente usando a estratégia de espera exponencial.
Se o erro persistir, entre em contato com o suporte usando o formulário de contato.