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
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;
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); } }; }
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
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
Xây dựng dịch vụ API.
# Build the API service. service = discovery.build( 'displayvideo', 'v3', discoveryServiceUrl=discovery_url, credentials=credentials)
1.199
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 Guzzle HTTP, 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 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ệ.