제한 시간 및 재시도 구성

많은 Display & Video 360 API 메서드는 완료하는 데 몇 초 이상 걸릴 수 있는 복잡한 작업을 수행합니다. 이러한 메서드에 대한 요청은 때때로 예상 지연 시간을 초과하여 API 또는 클라이언트 측에서 오류를 유발할 수 있습니다. 이 페이지에서는 연장된 요청 지연 시간으로 인해 발생하는 문제를 처리하는 방법을 설명합니다.

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

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

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

  • 자바: 20초
  • Python: 60초
  • PHP: 60초

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

Java

  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)
    

2,399필리핀

  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 오류 응답을 반환할 수 있습니다.

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

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