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

Nhiều phương thức API Display & Video 360 thực hiện các thao tác phức tạp có thể mất hơn vài giây để hoàn tất. Đôi khi, yêu cầu gửi đến các phương thức này có thể vượt quá độ trễ dự kiến, gây ra lỗi ở phía API hoặc máy khách. Trang này liệt kê các phương pháp xử lý những 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 thức cụ thể đã được gắn nhãn trong tài liệu tham khảo của họ là thường xuyên vượt quá độ trễ dự kiến. Các phương thức khác cũng có thể định kỳ biểu hiện hành vi có độ trễ cao.

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 đưa ra yêu cầu có độ trễ cao. Thời gian chờ mặc định cho một tập hợp con thư viện ứng dụng được hỗ trợ là:

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

Có thể tránh thời gian chờ phía máy khách bằng cách tăng thời gian chờ mặc định này. Hãy làm theo các hướng dẫn sau để đ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 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. Hàm tạo để đặ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. Hàm gọi khi tạo ứng dụng 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

  1. Nhập mô-đun http của thư viện ứng dụng Google API Python.

    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)
    

1.199

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

    composer require guzzlehttp/guzzle:^7.0
    
  2. Tạo ứng dụng Guzzle HTTP, 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ờ của API

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

Nếu một yêu cầu phản hồi bằng một trong các mã lỗi này, bạn nên thử lại các yêu cầu này bằng cách sử dụ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ợ bằng biểu mẫu liên hệ.