일부 API 메서드는 완료하는 데 몇 초 이상 걸릴 수 있는 복잡한 작업을 실행합니다. 이러한 요청은 기본값보다 오래 걸릴 수 있습니다. 이로 인해 API 또는 클라이언트 측에 오류가 발생할 수 있습니다. 이는 요청 지연 시간 연장으로 인한 문제를 방지하는 방법입니다.
클라이언트 라이브러리에서 기본 제한 시간 증가
일부 메서드는 일반적으로 지연 시간이 길게 응답합니다. 이는 메서드의 참조 페이지에 명시되어 있습니다. 드물지만 다른 메서드도 높은 지연 시간으로 응답할 수 있습니다.
일부 클라이언트 라이브러리에는 기본 제한 시간이 있습니다. 이러한 한도로 인해 요청의 지연 시간이 길어지면 오류가 발생합니다. 지원되는 일부 클라이언트 라이브러리의 기본 제한 시간은 다음과 같습니다.
- Java: 20초
- Python: 60초
- PHP: 60초
클라이언트 측 오류를 방지하려면 이러한 기본 한도를 늘리세요. 클라이언트 라이브러리의 기본 제한 시간을 변경하는 방법은 다음과 같습니다.
자바
필요한 리소스를 가져옵니다.
import com.google.api.client.http.HttpRequest; import com.google.api.client.http.HttpRequestInitializer; import java.io.IOException;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); } }; }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
Google API Python 클라이언트 라이브러리 http 모듈을 가져옵니다.
from googleapiclient import http기본 제한 시간 상수 업데이트
http.DEFAULT_HTTP_TIMEOUT_SEC = http-timeout-in-secondsAPI 서비스 빌드
# Build the API service. service = discovery.build( 'displayvideo', 'v3', discoveryServiceUrl=discovery_url, credentials=credentials)
PHP
Composer를 사용하여 Guzzle HTTP 라이브러리를 다운로드하고 설치합니다.
composer require guzzlehttp/guzzle:^7.0제한 시간 값을 할당하여 Guzzle HTTP 클라이언트 만들기
$httpClient = new \GuzzleHttp\Client(['timeout' => http-timeout-in-seconds]);Google 클라이언트를 만들고 Guzzle HTTP 클라이언트를 할당합니다.
$client = new Google_Client(); $client->setHttpClient($httpClient);
API 제한 시간 오류 처리
드물지만 요청이 180초의 서버 제한 시간을 초과할 수 있습니다. 이 경우 API는 408 또는 504 오류를 반환합니다.
요청이 이러한 코드 중 하나로 응답하는 경우 지수 백오프를 사용하여 요청을 재시도합니다.
오류가 계속되면 API 지원팀에 문의하세요.