多種多媒體和Video 360 API 方法可執行複雜的作業,所需時間可能會超過 幾秒鐘就會完成向這些方法發出的要求有時會超過 預期延遲,導致 API 或用戶端發生錯誤。本頁面列出 處理長時間要求延遲所造成的問題。
增加用戶端程式庫的預設逾時時間
在相關的參考文件中標示少數幾個具體方法 通常超過預期延遲時間其他方法也可能 定期執行高延遲行為
部分用戶端程式庫的預設逾時限制可能會導致 發出高延遲時間的要求支援用戶端子集的預設逾時 程式庫包括:
- Java:20 秒
- Python:60 秒
- PHP:60 秒
如要避免用戶端逾時,提高這些預設逾時值。追蹤 調整用戶端程式庫的預設逾時時間 執行階段:
Java
匯入必要資源。
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); } }; }
在建立顯示畫面時呼叫函式,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-seconds
建構 API 服務。
# Build the API service. service = discovery.build( 'displayvideo', 'v3', discoveryServiceUrl=discovery_url, credentials=credentials)
PHP
使用以下指令下載並安裝 Guzzle HTTP 程式庫 Composer。
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
錯誤回應。
如果要求在回應中提供上述任一錯誤代碼,建議您 使用指數輪詢策略重試這些要求。
如果錯誤仍未解決,請透過聯絡表單與支援團隊聯絡。