เมธอด API ของ Display & Video 360 หลายวิธีดำเนินการที่ซับซ้อน ซึ่งอาจใช้เวลามากกว่า 2-3 วินาที ในบางครั้ง คำขอที่ส่งไปยังวิธีการเหล่านี้อาจใช้เวลาในการตอบสนองเกินที่คาดไว้ ทำให้เกิดข้อผิดพลาดใน 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); } }; }
ฟังก์ชันการเรียกใช้เมื่อสร้างไคลเอ็นต์ API ของ Display & Video 360
// 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
นำเข้าโมดูล HTTP ไลบรารีของไคลเอ็นต์ Python ของ Google API
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
ดาวน์โหลดและติดตั้งไลบรารี HTTP ของ Guzzle โดยใช้ Composer
composer require guzzlehttp/guzzle:^7.0
สร้างไคลเอ็นต์ HTTP ของ Guzzle โดยกำหนดค่าระยะหมดเวลา
$httpClient = new \GuzzleHttp\Client(['timeout' => http-timeout-in-seconds]);
สร้างไคลเอ็นต์ Google และกำหนดไคลเอ็นต์ HTTP ของ Guzzle
$client = new Google_Client(); $client->setHttpClient($httpClient);
จัดการข้อผิดพลาดเกี่ยวกับการหมดเวลาของ API
ในบางกรณีที่เกิดขึ้นไม่บ่อยนัก คำขอที่ดำเนินการที่ซับซ้อนอาจเกินระยะหมดเวลาฝั่งเซิร์ฟเวอร์ที่ 180 วินาที ซึ่งทำให้ API แสดงผลการตอบกลับข้อผิดพลาด 408
หรือ 504
หากคำขอตอบกลับด้วยรหัสข้อผิดพลาดรายการใดรายการหนึ่งเหล่านี้ เราขอแนะนำให้คุณลองอีกครั้งโดยใช้กลยุทธ์ Exponential Backoff
หากข้อผิดพลาดยังคงอยู่ โปรดติดต่อทีมสนับสนุนโดยใช้แบบฟอร์มติดต่อ