Konfigurowanie limitów czasu oczekiwania i ponownych prób

Wiele reklam displayowych Metody interfejsu API Video 360 wykonują złożone operacje, które mogą potrwać dłużej niż za chwilę minie kilka sekund. Żądania wysyłane do tych metod mogą czasami przekraczać spodziewany czas oczekiwania, który powoduje błędy po stronie interfejsu API lub klienta. Ta strona zawiera listę w zakresie obsługi problemów spowodowanych dłuższym czasem oczekiwania na żądanie.

Zwiększ domyślny czas oczekiwania w bibliotece klienta

W dokumentacji referencyjnej wymieniono kilka konkretnych metod regularnie przekraczając spodziewany czas oczekiwania. Inne metody mogą również może okresowo działać z dużym opóźnieniem.

Domyślne limity czasu oczekiwania niektórych bibliotek klienta mogą powodować błędy, jeśli wysyłania żądań z dużym opóźnieniem. Domyślne limity czasu dla podzbioru obsługiwanego klienta biblioteki to:

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

Aby uniknąć przekroczenia limitów czasu po stronie klienta, zwiększ te domyślne limity. Obserwuj te instrukcje dotyczące zmiany domyślnego limitu czasu dla biblioteki klienta w okresie środowisko wykonawcze:

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. Funkcja kompilacji 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ływanie funkcji podczas tworzenia komponentu klient interfejsu 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 interfejsu API Google w Pythonie.

    from googleapiclient import http
    
  2. Zaktualizuj domyślną wartość limitu czasu.

    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 Kompozytor

    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 przekroczenia limitu czasu interfejsu API

W rzadkich przypadkach żądania ukończenia złożonych operacji mogą przekraczać limit czasu po stronie serwera równy 180 sekund, przez co interfejs API zwraca błąd 408 lub 504 odpowiedź na żądanie błędu.

Jeśli żądanie zwróci odpowiedź z jednym z tych kodów błędu, zalecamy ponawiać żądania, używając strategii wykładniczego czasu do ponowienia.

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