Zaman aşımlarını ve yeniden denemeleri yapılandırma

Birçok Display & Video 360 API yöntemi, tamamlanması birkaç saniyeden uzun sürebilecek karmaşık işlemler gerçekleştirir. Bu yöntemlere yapılan istekler bazen beklenen gecikmeyi aşabilir ve API veya istemci tarafında hatalara neden olabilir. Bu sayfada, uzun istek gecikmesinden kaynaklanan sorunları ele almayla ilgili uygulamalar listelenmiştir.

İstemci kitaplığında varsayılan zaman aşım süresini artırma

Referans dokümanlarındaki belirli yöntemler, beklenen gecikmeyi düzenli olarak aştığı için etiketlenmiştir. Diğer yöntemler de zaman zaman yüksek gecikmeli davranış gösterebilir.

Bazı istemci kitaplıklarının varsayılan zaman aşımı sınırları, yüksek gecikmeli istekler yapılırken hatalara neden olabilir. Desteklenen istemci kitaplıklarının bir alt kümesi için varsayılan zaman aşımları şunlardır:

  • Java: 20 saniye
  • Python: 60 saniye
  • PHP: 60 saniye

Bu varsayılan zaman aşımları artırılarak istemci tarafında zaman aşımı önlenebilir. Çalışma zamanında istemci kitaplığınız için varsayılan zaman aşımını ayarlamak üzere aşağıdaki talimatları uygulayın:

Java

  1. Gerekli kaynakları içe aktarın.

    import com.google.api.client.http.HttpRequest;
    import com.google.api.client.http.HttpRequestInitializer;
    import java.io.IOException;
    
  2. HTTP zaman aşımını ayarlamak için işlev oluşturma.

    /**
     * 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. Display & Video 360 API istemcisini oluştururken işlevi çağırın.

    // 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. Google API Python istemci kitaplığı http modülünü içe aktarın.

    from googleapiclient import http
    
  2. Varsayılan zaman aşımı sabit değerini güncelleyin.

    http.DEFAULT_HTTP_TIMEOUT_SEC = http-timeout-in-seconds
    
  3. API hizmetini oluşturun.

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

PHP

  1. Composer'ı kullanarak Guzzle HTTP kitaplığını indirip yükleyin.

    composer require guzzlehttp/guzzle:^7.0
  2. Gecikme süresi değeri atayarak Guzzle HTTP istemcisi oluşturun.

    $httpClient = new \GuzzleHttp\Client(['timeout' => http-timeout-in-seconds]);
    
  3. Google istemcisi oluşturun ve Guzzle HTTP istemcisini atayın.

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

API zaman aşımı hatalarını işleme

Nadir durumlarda, karmaşık işlemleri tamamlayan istekler sunucu tarafındaki 180 saniyelik zaman aşımını aşabilir. Bu da API'nin 408 veya 504 hata yanıtı döndürmesine neden olur.

Bir istek bu hata kodlarından biriyle yanıtlanırsa üsselik geri çekilme stratejisini kullanarak bu istekleri yeniden denemenizi öneririz.

Hata devam ederse iletişim formunu kullanarak destek ekibine ulaşın.