Định cấu hình thời gian chờ và số lần thử lại

Nhiều quảng cáo Hiển thị và Các phương thức API Video 360 thực hiện các thao tác phức tạp có thể mất nhiều thời gian hơn vài giây để hoàn tất. Yêu cầu đối với những phương thức này đôi khi có thể vượt quá độ trễ dự kiến, gây ra lỗi về phía API hoặc phía máy khách. Trang này liệt kê các phương pháp xử lý vấn đề do độ trễ yêu cầu kéo dài.

Tăng thời gian chờ mặc định trong thư viện ứng dụng

Một số phương pháp cụ thể đã được gắn nhãn trong tài liệu tham khảo thường xuyên vượt quá độ trễ dự kiến. Các phương pháp khác cũng có thể cho thấy độ trễ cao theo định kỳ.

Giới hạn thời gian chờ mặc định cho một số thư viện ứng dụng có thể dẫn đến lỗi khi thực hiện các yêu cầu có độ trễ cao. Thời gian chờ mặc định cho một nhóm nhỏ ứng dụng được hỗ trợ các thư viện là:

  • Java: 20 giây
  • Python: 60 giây
  • PHP: 60 giây

Bạn có thể tránh thời gian chờ phía máy khách bằng cách tăng các thời gian chờ mặc định này. Theo dõi để điều chỉnh thời gian chờ mặc định cho thư viện ứng dụng trong thời gian chạy:

Java

  1. Nhập các tài nguyên cần thiết.

    import com.google.api.client.http.HttpRequest;
    import com.google.api.client.http.HttpRequestInitializer;
    import java.io.IOException;
    
  2. Xây dựng hàm để đặt thời gian chờ 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. Gọi chức năng khi tạo Hiển thị & Ứng dụng 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. Nhập mô-đun http của thư viện ứng dụng Python của Google API.

    from googleapiclient import http
    
  2. Cập nhật hằng số thời gian chờ mặc định.

    http.DEFAULT_HTTP_TIMEOUT_SEC = http-timeout-in-seconds
    
  3. Xây dựng dịch vụ API.

    # Build the API service.
    service = discovery.build(
      'displayvideo',
      'v3',
      discoveryServiceUrl=discovery_url,
      credentials=credentials)
    

PHP

  1. Tải xuống và cài đặt thư viện HTTP Guzzle bằng Composer.

    composer require guzzlehttp/guzzle:^7.0
    
  2. Tạo ứng dụng HTTP Guzzle, chỉ định giá trị thời gian chờ.

    $httpClient = new \GuzzleHttp\Client(['timeout' => http-timeout-in-seconds]);
    
  3. Tạo ứng dụng Google và chỉ định ứng dụng Guzzle HTTP.

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

Xử lý lỗi hết thời gian chờ API

Trong một số ít trường hợp, yêu cầu hoàn thành các thao tác phức tạp có thể vượt quá thời gian chờ phía máy chủ là 180 giây, khiến API trả về 408 hoặc 504 của bạn.

Nếu yêu cầu phản hồi kèm theo một trong các mã lỗi sau đây, thì bạn nên thử lại các yêu cầu này bằng chiến lược thời gian đợi luỹ thừa.

Nếu lỗi vẫn tiếp diễn, hãy liên hệ với nhóm hỗ trợ thông qua biểu mẫu liên hệ.