Alguns métodos de API realizam tarefas complexas que podem levar mais do que alguns segundos para serem concluídas. Essas solicitações podem levar mais tempo do que o permitido pelos padrões. Isso pode causar erros na API ou no lado do cliente. Essas são maneiras de evitar problemas causados por latência de solicitação estendida.
Aumentar o tempo limite padrão na biblioteca de cliente
Alguns métodos costumam responder com alta latência. Isso é indicado na página de referência do método. Outros métodos também podem responder com alta latência em raras ocasiões.
Algumas bibliotecas de cliente têm limites de tempo limite padrão. Esses limites causam erros quando as solicitações têm alta latência. Os tempos limite padrão para algumas das bibliotecas de cliente compatíveis são:
- Java: 20 segundos.
- Python: 60 segundos.
- PHP: 60 segundos.
Aumente esses limites padrão para evitar erros do lado do cliente. Veja como mudar o tempo limite padrão da sua biblioteca de cliente:
Java
Importe os recursos necessários.
import com.google.api.client.http.HttpRequest; import com.google.api.client.http.HttpRequestInitializer; import java.io.IOException;Criar 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); } }; }Chame 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
Importe o módulo http da biblioteca de cliente Python da API do Google.
from googleapiclient import httpAtualizar a constante de tempo limite padrão.
http.DEFAULT_HTTP_TIMEOUT_SEC = http-timeout-in-secondsCrie o 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.0Crie o cliente HTTP Guzzle e atribua o valor de tempo limite.
$httpClient = new \GuzzleHttp\Client(['timeout' => http-timeout-in-seconds]);Crie um cliente do Google e atribua o cliente HTTP Guzzle.
$client = new Google_Client(); $client->setHttpClient($httpClient);
Processar erros de tempo limite da API
Em casos raros, as solicitações podem exceder o tempo limite do servidor de 180 segundos. Nesse caso, a API retorna um erro 408 ou 504.
Se uma solicitação responder com um desses códigos, tente de novo usando a espera exponencial.
Se o erro persistir, entre em contato com o suporte da API.