Konfigurowanie limitów czasu oczekiwania i ponownych prób

Wiele metod interfejsu Display & Video 360 API wykonuje złożone operacje, które mogą zająć więcej niż kilka sekund. Żądania wysyłane do tych metod mogą czasami przekraczać oczekiwany czas oczekiwania, powodując błędy po stronie interfejsu API lub klienta. Ta strona zawiera listę metod rozwiązywania problemów spowodowanych wydłużonym czasem oczekiwania na odpowiedź.

Zwiększanie domyślnego limitu czasu w bibliotece klienta

W dokumentacji referencyjnej niektóre metody zostały oznaczone jako takie, które regularnie przekraczają oczekiwany czas oczekiwania. Inne metody mogą też okresowo wykazywać wysokie opóźnienia.

Domyślne limity czasu dla niektórych bibliotek klienta mogą powodować błędy podczas wysyłania żądań o wysokiej latencji. Domyślne limity czasu dla podzbioru obsługiwanych bibliotek klienta:

  • Java: 20 sekund
  • Python: 60 sekund
  • PHP: 60 sekund

Czasy oczekiwania po stronie klienta można wydłużyć, zwiększając te domyślne wartości. Aby dostosować domyślny czas oczekiwania biblioteki klienta podczas wykonywania kodu, wykonaj te czynności:

Java

  1. Zaimportuj niezbędne zasoby.

    import com.google.api.client.http.HttpRequest;
    import com.google.api.client.http.HttpRequestInitializer;
    import java.io.IOException;
    
  2. Utwórz funkcję do ustawiania limitu czasu 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. Wywołuj funkcję podczas tworzenia klienta interfejsu Display & Video 360 API.

    // 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. Zaimportuj moduł http biblioteki klienta interfejsów API Google w języku Python.

    from googleapiclient import http
    
  2. Zaktualizuj domyślną stałą czasu oczekiwania.

    http.DEFAULT_HTTP_TIMEOUT_SEC = http-timeout-in-seconds
    
  3. Utwórz usługę interfejsu API.

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

PHP

  1. Pobierz i zainstaluj bibliotekę HTTP Guzzle za pomocą Composera.

    composer require guzzlehttp/guzzle:^7.0
  2. Utwórz klienta HTTP Guzzle, przypisując wartość limitu czasu.

    $httpClient = new \GuzzleHttp\Client(['timeout' => http-timeout-in-seconds]);
    
  3. Utwórz klienta Google i przypisz klienta HTTP Guzzle.

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

Obsługa błędów limitu czasu interfejsu API

W rzadkich przypadkach żądania wykonujące złożone operacje mogą przekroczyć limit czasu po stronie serwera wynoszący 180 sekund, co spowoduje, że interfejs API zwróci odpowiedź błędu 408 lub 504.

Jeśli odpowiedź na żądanie zawiera któryś z tych kodów błędów, zalecamy ponowne wysłanie żądania z użyciem strategii wygaszania wykładniczego.

Jeśli błąd będzie się powtarzał, skontaktuj się z zespołem pomocy, korzystając z formularza kontaktowego.