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

Birçok Display & Video 360 API yöntemi, tamamlanması birkaç saniyeden uzun sürebilen karmaşık işlemler gerçekleştirir. Bu yöntemlere yapılan istekler bazen beklenen gecikmeyi aşabilir ve bu da API'de veya istemci tarafında hatalara neden olabilir. Bu sayfada, uzatılmış istek gecikmesinden kaynaklanan sorunları ele alma uygulamaları listelenmektedir.

İstemci kitaplığında varsayılan zaman aşımını artır

Bazı özel yöntemler referans belgelerinde, beklenen gecikmeyi düzenli olarak aştığı şekilde etiketlenmiştir. Diğer yöntemler de periyodik olarak yüksek gecikmeli davranışlar sergileyebilir.

Bazı istemci kitaplıkları için varsayılan zaman aşımı sınırları, yüksek gecikmeli istekler oluşturulurken 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ını artırarak istemci tarafı zaman aşımlarını önleyebilirsiniz. Çalışma zamanında istemci kitaplığınız için varsayılan zaman aşımını ayarlamak üzere şu 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 derleme.

    /**
     * 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.

    from googleapiclient import http
    
  2. Varsayılan zaman aşımı sabitini güncelleyin.

    http.DEFAULT_HTTP_TIMEOUT_SEC = http-timeout-in-seconds
    
  3. API hizmeti derleme.

    # 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. Zaman aşımı 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 istemcisi atayın.

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

API zaman aşımı hatalarını giderme

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

Bir istek bu hata kodlarından biriyle yanıt verirse bu istekleri üstel geri yükleme stratejisini kullanarak yeniden denemenizi öneririz.

Sorun devam ederse iletişim formunu kullanarak destek ekibiyle iletişime geçin.