Banyak metode Display & Video 360 API yang melakukan operasi kompleks yang mungkin memerlukan waktu lebih dari beberapa detik untuk diselesaikan. Permintaan ke metode ini terkadang dapat melebihi latensi yang diharapkan, sehingga menyebabkan error di sisi API atau klien. Halaman ini mencantumkan praktik untuk menangani masalah yang disebabkan oleh latensi permintaan yang diperpanjang.
Meningkatkan waktu tunggu default di library klien
Beberapa metode tertentu telah diberi label dalam dokumentasi referensinya sebagai rutin melebihi latensi yang diharapkan. Metode lain juga dapat menunjukkan perilaku latensi tinggi secara berkala.
Batas waktu tunggu default untuk beberapa library klien dapat menyebabkan error saat membuat permintaan dengan latensi tinggi. Waktu tunggu default untuk sebagian library klien yang didukung adalah:
- Java: 20 detik
- Python: 60 detik
- PHP: 60 detik
Waktu tunggu sisi klien dapat dihindari dengan menaikkan waktu tunggu default ini. Ikuti petunjuk ini untuk menyesuaikan waktu tunggu default untuk library klien Anda selama runtime:
Java
Impor resource yang diperlukan.
import com.google.api.client.http.HttpRequest; import com.google.api.client.http.HttpRequestInitializer; import java.io.IOException;
Mem-build fungsi untuk menetapkan waktu tunggu 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); } }; }
Memanggil fungsi saat membuat klien Display & 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
Impor modul http library klien Python Google API.
from googleapiclient import http
Memperbarui konstanta waktu tunggu default.
http.DEFAULT_HTTP_TIMEOUT_SEC = http-timeout-in-seconds
Mem-build layanan API.
# Build the API service. service = discovery.build( 'displayvideo', 'v3', discoveryServiceUrl=discovery_url, credentials=credentials)
PHP
Download dan instal library HTTP Guzzle menggunakan Composer.
composer require guzzlehttp/guzzle:^7.0
Membuat klien HTTP Guzzle, menetapkan nilai waktu tunggu.
$httpClient = new \GuzzleHttp\Client(['timeout' => http-timeout-in-seconds]);
Buat klien Google dan tetapkan klien HTTP Guzzle.
$client = new Google_Client(); $client->setHttpClient($httpClient);
Menangani error waktu tunggu API
Dalam kasus yang jarang terjadi, permintaan yang menyelesaikan operasi kompleks dapat melebihi
waktu tunggu sisi server selama 180 detik, sehingga API menampilkan respons error
408
atau 504
.
Jika permintaan merespons dengan salah satu kode error ini, sebaiknya coba ulang permintaan tersebut menggunakan strategi backoff eksponensial.
Jika error tetap berlanjut, hubungi dukungan menggunakan formulir kontak.