एपीआई के कुछ तरीके ऐसे मुश्किल टास्क करते हैं जिन्हें पूरा होने में कुछ सेकंड से ज़्यादा समय लग सकता है. इन अनुरोधों को पूरा होने में, डिफ़ॉल्ट तौर पर तय किए गए समय से ज़्यादा समय लग सकता है. इस वजह से, एपीआई या क्लाइंट साइड पर गड़बड़ियां हो सकती हैं. अनुरोध के इंतज़ार के समय में बढ़ोतरी की वजह से होने वाली समस्याओं से बचने के ये तरीके हैं.
क्लाइंट लाइब्रेरी में डिफ़ॉल्ट टाइम आउट बढ़ाना
कुछ तरीकों से जवाब मिलने में ज़्यादा समय लगता है. इसकी जानकारी, तरीके के रेफ़रंस पेज पर दी गई है. कभी-कभी, अन्य तरीकों से भी ज़्यादा समय लग सकता है.
कुछ क्लाइंट लाइब्रेरी में, टाइम आउट की डिफ़ॉल्ट सीमाएं होती हैं. इन सीमाओं की वजह से, अनुरोधों में ज़्यादा समय लगने पर गड़बड़ियां होती हैं. साथ काम करने वाली कुछ क्लाइंट लाइब्रेरी के लिए, डिफ़ॉल्ट टाइमआउट ये हैं:
- Java: 20 सेकंड.
- Python: 60 सेकंड.
- PHP: 60 सेकंड.
क्लाइंट-साइड की गड़बड़ियों से बचने के लिए, डिफ़ॉल्ट सीमाओं को बढ़ाएं. क्लाइंट लाइब्रेरी के लिए डिफ़ॉल्ट टाइमआउट बदलने का तरीका यहां बताया गया है:
Java
ज़रूरी संसाधन इंपोर्ट करें.
import com.google.api.client.http.HttpRequest; import com.google.api.client.http.HttpRequestInitializer; import java.io.IOException;एचटीटीपी टाइम आउट सेट करने के लिए, फ़ंक्शन बनाएं.
/** * 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); } }; }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
Google API की Python क्लाइंट लाइब्रेरी के एचटीटीपी मॉड्यूल को इंपोर्ट करें.
from googleapiclient import httpडिफ़ॉल्ट टाइमआउट कॉन्स्टेंट अपडेट करें.
http.DEFAULT_HTTP_TIMEOUT_SEC = http-timeout-in-secondsएपीआई सेवा बनाएं.
# Build the API service. service = discovery.build( 'displayvideo', 'v3', discoveryServiceUrl=discovery_url, credentials=credentials)
PHP
Composer का इस्तेमाल करके, Guzzle HTTP लाइब्रेरी को डाउनलोड और इंस्टॉल करें.
composer require guzzlehttp/guzzle:^7.0टाइमआउट की वैल्यू असाइन करके, Guzzle एचटीटीपी क्लाइंट बनाएं.
$httpClient = new \GuzzleHttp\Client(['timeout' => http-timeout-in-seconds]);Google क्लाइंट बनाएं और Guzzle HTTP क्लाइंट असाइन करें.
$client = new Google_Client(); $client->setHttpClient($httpClient);
एपीआई के टाइमआउट से जुड़ी गड़बड़ियों को ठीक करना
कुछ मामलों में, अनुरोधों को पूरा होने में 180 सेकंड से ज़्यादा समय लग सकता है. इस मामले में, एपीआई 408 या 504 गड़बड़ी का मैसेज दिखाता है.
अगर किसी अनुरोध का जवाब इनमें से किसी कोड के साथ मिलता है, तो एक्स्पोनेंशियल बैकऑफ़ का इस्तेमाल करके अनुरोध को फिर से भेजें.
अगर गड़बड़ी बनी रहती है, तो एपीआई सहायता टीम से संपर्क करें.