เมธอด Display & Video 360 API จํานวนมากดําเนินการที่ซับซ้อนซึ่งอาจใช้เวลานานกว่า 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); } }; }
เรียกใช้ฟังก์ชันเมื่อสร้างไคลเอ็นต์ 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
นําเข้าโมดูล http ของไลบรารีของไคลเอ็นต์ Google API สำหรับ Python
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
สร้างไคลเอ็นต์ 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
หากคําขอตอบกลับด้วยรหัสข้อผิดพลาดอย่างใดอย่างหนึ่งต่อไปนี้ เราขอแนะนําให้คุณลองส่งคําขอเหล่านี้อีกครั้งโดยใช้กลยุทธ์การลดจำนวนคำขอแบบทวีคูณ
หากข้อผิดพลาดยังคงอยู่ โปรดติดต่อทีมสนับสนุนโดยใช้แบบฟอร์มติดต่อ