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 nhiều hơn vài giây để hoàn tất. Đôi khi, các yêu cầu đối với 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ý các 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 chúng là thường xuyên vượt quá độ trễ dự kiến. Các phương thức khác cũng có thể hiển thị hành vi có độ 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 khách 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 số thư viện ứng dụng khách được hỗ trợ 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 thời gian chờ mặc định này. Làm theo hướng dẫn này để đ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
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;
Tạo 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); } }; }
Gọi hàm 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
Nhập mô-đun http của thư viện ứng dụng Google API Python.
from googleapiclient import http
Cập nhật hằng số thời gian chờ mặc định.
http.DEFAULT_HTTP_TIMEOUT_SEC = http-timeout-in-seconds
Tạo dịch vụ API.
# Build the API service. service = discovery.build( 'displayvideo', 'v3', discoveryServiceUrl=discovery_url, credentials=credentials)
PHP
Tải và cài đặt thư viện Guzzle HTTP bằng Composer.
composer require guzzlehttp/guzzle:^7.0
Tạo ứng dụng khách HTTP Guzzle, chỉ định giá trị thời gian chờ.
$httpClient = new \GuzzleHttp\Client(['timeout' => http-timeout-in-seconds]);
Tạo ứng dụng Google và chỉ định ứng dụng HTTP Guzzle.
$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, các yêu cầu hoàn tất 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ề 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 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ệ.