กำหนดค่าการหมดเวลาและการลองใหม่

ดิสเพลย์จำนวนมากและ เมธอด API ของ Video 360 จะดำเนินการที่ซับซ้อน ซึ่งอาจใช้เวลานานกว่า ไม่กี่วินาทีจึงจะเสร็จสมบูรณ์ ในบางครั้ง คำขอที่ส่งไปยังวิธีการเหล่านี้จะเกินเกณฑ์ได้ เวลาในการตอบสนองที่คาดไว้ ซึ่งทำให้เกิดข้อผิดพลาดใน API หรือฝั่งไคลเอ็นต์ หน้านี้แสดงรายการ แนวทางการจัดการปัญหาที่เกิดจากเวลาในการตอบสนองของคำขอที่นานขึ้น

เพิ่มระยะหมดเวลาเริ่มต้นในไลบรารีของไคลเอ็นต์

วิธีการที่เฉพาะเจาะจงจำนวนหนึ่งมีการติดป้ายกำกับไว้ในเอกสารอ้างอิง หรือเวลาในการตอบสนองเกินกว่าที่คาดไว้เป็นประจำ วิธีอื่นๆ อาจแสดง เวลาในการตอบสนองสูงเป็นระยะๆ

ขีดจำกัดการหมดเวลาเริ่มต้นสำหรับไลบรารีของไคลเอ็นต์บางรายการอาจทำให้เกิดข้อผิดพลาดเมื่อ การส่งคำขอที่มีเวลาในการตอบสนองสูง ระยะหมดเวลาเริ่มต้นสำหรับชุดย่อยของไคลเอ็นต์ที่รองรับ ไลบรารีมีดังนี้

  • Java: 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. ฟังก์ชันเรียกใช้เมื่อสร้างดิสเพลย์และ ไคลเอ็นต์ 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. นำเข้าโมดูล http ของไลบรารีของไคลเอ็นต์ Google API ใน Python

    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)
    

PHP

  1. ดาวน์โหลดและติดตั้งไลบรารี HTTP ของ Guzzle โดยใช้ ผู้ประพันธ์เพลง

    composer require guzzlehttp/guzzle:^7.0
  2. สร้างไคลเอ็นต์ HTTP ของ Guzzle โดยกำหนดค่าระยะหมดเวลา

    $httpClient = new \GuzzleHttp\Client(['timeout' => http-timeout-in-seconds]);
    
  3. สร้างไคลเอ็นต์ Google และกำหนดไคลเอ็นต์ HTTP ของ Guzzle

    $client = new Google_Client();
    $client->setHttpClient($httpClient);
    

จัดการข้อผิดพลาดการหมดเวลาของ API

ในบางกรณีที่เกิดขึ้นไม่บ่อยนัก คำขอที่ดำเนินการที่ซับซ้อนอาจเกิน หมดเวลาฝั่งเซิร์ฟเวอร์ 180 วินาที ทำให้ API แสดงผล 408 หรือ 504 การตอบกลับข้อผิดพลาด

หากคำขอตอบกลับด้วยรหัสข้อผิดพลาดเหล่านี้ เราขอแนะนำให้คุณ ลองส่งคำขอเหล่านี้อีกครั้งโดยใช้กลยุทธ์ Exponential Backoff

หากข้อผิดพลาดยังคงอยู่ โปรดติดต่อทีมสนับสนุนโดยใช้แบบฟอร์มติดต่อ