제한 시간 및 재시도 구성

많은 Display & Video 360 API 메서드는 완료하는 데 몇 초가 걸릴 수 있는 복잡한 작업을 실행합니다. 이러한 메서드에 대한 요청이 예상 지연 시간을 초과하여 API 또는 클라이언트 측에서 오류가 발생하는 경우가 있습니다. 이 페이지에는 요청 지연 시간이 길어져 발생하는 문제를 처리하기 위한 관행이 나와 있습니다.

클라이언트 라이브러리에서 기본 제한 시간 늘리기

참조 문서에서 일부 특정 메서드가 예상 지연 시간을 정기적으로 초과한다고 라벨이 지정되었습니다. 다른 메서드도 주기적으로 지연 시간이 긴 동작을 보일 수 있습니다.

일부 클라이언트 라이브러리의 기본 제한 시간으로 인해 지연 시간이 긴 요청을 할 때 오류가 발생할 수 있습니다. 지원되는 클라이언트 라이브러리의 하위 집합에 대한 기본 제한 시간은 다음과 같습니다.

  • Java: 20초
  • Python: 60초
  • PHP: 60초

이러한 기본 시간 제한을 늘리면 클라이언트 측 시간 제한을 방지할 수 있습니다. 런타임 중에 클라이언트 라이브러리의 기본 제한 시간을 조정하려면 다음 안내를 따르세요.

자바

  1. 필요한 리소스를 가져옵니다.

    import com.google.api.client.http.HttpRequest;
    import com.google.api.client.http.HttpRequestInitializer;
    import java.io.IOException;
    
  2. 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. 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. Google API Python 클라이언트 라이브러리 http 모듈을 가져옵니다.

    from googleapiclient import http
    
  2. 기본 제한 시간 상수를 업데이트합니다.

    http.DEFAULT_HTTP_TIMEOUT_SEC = http-timeout-in-seconds
    
  3. API 서비스를 빌드합니다.

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

PHP

  1. Composer를 사용하여 Guzzle HTTP 라이브러리를 다운로드하여 설치합니다.

    composer require guzzlehttp/guzzle:^7.0
  2. Guzzle HTTP 클라이언트를 만들고 제한 시간 값을 할당합니다.

    $httpClient = new \GuzzleHttp\Client(['timeout' => http-timeout-in-seconds]);
    
  3. Google 클라이언트를 만들고 Guzzle HTTP 클라이언트를 할당합니다.

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

API 제한 시간 오류 처리

드물지만 복잡한 작업을 완료하는 요청이 서버 측 시간 제한인 180초를 초과하여 API가 408 또는 504 오류 응답을 반환할 수 있습니다.

요청이 이러한 오류 코드 중 하나로 응답하는 경우 지수 백오프 전략을 사용하여 이러한 요청을 재시도하는 것이 좋습니다.

오류가 계속되면 문의 양식을 사용하여 지원팀에 문의하세요.