Google Calendar API के लिए कोटा तय किए गए हैं, ताकि सभी लोग इसका सही तरीके से इस्तेमाल कर सकें. Calendar API का इस्तेमाल करते समय, इन तीन ज़रूरी सीमाओं का ध्यान रखें:
- एपीआई के इस्तेमाल के कोटे को हर प्रोजेक्ट और हर उपयोगकर्ता के हिसाब से लागू किया जाता है. ज़्यादा जानकारी के लिए, अगला सेक्शन देखें.
- Calendar के इस्तेमाल से जुड़ी सामान्य सीमाएं: Calendar के इस्तेमाल से जुड़ी सीमाओं का उल्लंघन न करें.
- ऑपरेशनल सीमाएं: किसी भी समय, दर की सीमा तय की जा सकती है. उदाहरण के लिए, अगर किसी एक कैलेंडर में लगातार कई बार लिखने की कोशिश की जाती है.
Calendar API के इस्तेमाल के कोटा के टाइप
दो तरह के कोटे लागू किए जाते हैं:
- हर प्रोजेक्ट के लिए, हर मिनट: यह आपके Google Cloud प्रोजेक्ट से किए गए अनुरोधों की संख्या है.
- हर उपयोगकर्ता के लिए, हर प्रोजेक्ट के हिसाब से हर मिनट में किए जा सकने वाले अनुरोधों की संख्या: यह आपके Cloud प्रोजेक्ट में किसी एक उपयोगकर्ता के किए गए अनुरोधों की संख्या है. इस सीमा का मकसद, यह पक्का करने में आपकी मदद करना है कि आपके उपयोगकर्ताओं के बीच, ऐप्लिकेशन के इस्तेमाल को सही तरीके से बांटा जाए.
स्लाइडिंग विंडो का इस्तेमाल करके, हर मिनट के हिसाब से कोटा का हिसाब लगाया जाता है. इसलिए, अगर एक मिनट में ट्रैफ़िक में अचानक बढ़ोतरी होती है और वह हर मिनट के हिसाब से तय किए गए कोटे से ज़्यादा हो जाता है, तो अगले मिनट में दर सीमित हो जाएगी. इससे यह पक्का किया जा सकेगा कि आपका इस्तेमाल, औसतन कोटे के अंदर ही रहे.
अगर इनमें से किसी भी कोटे की सीमा पार हो जाती है, तो आपको दर सीमित कर दी जाती है. साथ ही, आपको अपनी क्वेरी के लिए 403 usageLimits स्टेटस कोड या 429 usageLimits स्टेटस कोड मिलता है. अगर ऐसा होता है, तो यहां बताया गया है कि आपको क्या करना चाहिए:
- पक्का करें कि आपने इन सभी सबसे सही तरीकों का पालन किया हो: एक्सपोनेंशियल बैकऑफ़ का इस्तेमाल करें, ट्रैफ़िक पैटर्न को रैंडमाइज़ करें, पुश नोटिफ़िकेशन का इस्तेमाल करें.
- अगर आपके प्रोजेक्ट में उपयोगकर्ताओं की संख्या बढ़ रही है, तो हर प्रोजेक्ट के लिए कोटा बढ़ाने का अनुरोध किया जा सकता है.
- अगर हर उपयोगकर्ता के लिए तय की गई कोटा सीमा पूरी हो जाती है, तो ये काम किए जा सकते हैं:
- अगर सेवा खाते का इस्तेमाल किया जाता है, तो उपयोगकर्ताओं को लोड असाइन करें या इसे एक से ज़्यादा सेवा खातों के बीच बांटें.
- हालांकि, हर उपयोगकर्ता के लिए तय कोटे को बढ़ाने का अनुरोध किया जा सकता है, लेकिन आम तौर पर इसे डिफ़ॉल्ट वैल्यू से ज़्यादा बढ़ाने का सुझाव नहीं दिया जाता. ऐसा इसलिए, क्योंकि आपका ऐप्लिकेशन अन्य तरह की सीमाओं को पार कर सकता है. उदाहरण के लिए, कैलेंडर के सामान्य इस्तेमाल की सीमाएं या ऑपरेशनल सीमाएं.
कोटा बढ़ाने का अनुरोध करना
अपने प्रोजेक्ट के लिए इस्तेमाल की सीमाएं देखने या उनमें बदलाव करने के लिए, यह तरीका अपनाएं. इसके अलावा, कोटा बढ़ाने का अनुरोध करने के लिए भी यह तरीका अपनाएं:
- अगर आपके प्रोजेक्ट के लिए, पहले से कोई बिलिंग खाता नहीं है, तो एक खाता बनाएं.
- एपीआई कंसोल में, एपीआई लाइब्रेरी के 'चालू किए गए एपीआई' पेज पर जाएं और सूची में से कोई एपीआई चुनें.
- कोटे से जुड़ी सेटिंग देखने और बदलने के लिए, कोटे को चुनें. इस्तेमाल के आंकड़े देखने के लिए, इस्तेमाल को चुनें.
एक्स्पोनेंशियल बैकऑफ़ का इस्तेमाल करना
जब हमें आपसे अनुरोधों की दर कम करने के लिए कहना होगा, तब हम 403 "usageLimits" रिस्पॉन्स या 429 रिस्पॉन्स दिखाएंगे. गड़बड़ी से जुड़े पूरे दस्तावेज़ देखें. यह गंभीर गड़बड़ी नहीं है. हम चाहते हैं कि आप कुछ समय बाद अनुरोध को फिर से भेजें. अगर अनुरोध अब भी बहुत तेज़ी से आ रहे हैं, तो हम आपसे फिर से पूछेंगे. ऐसा तब तक जारी रहेगा, जब तक अनुरोधों की संख्या कम नहीं हो जाती. इसके सही तरीके से काम करने के लिए, यह ज़रूरी है कि समय के साथ अनुरोधों के बीच का समय बढ़ता जाए.
आम तौर पर, आपको ट्रंकेटेड एक्सपोनेंशियल बैकऑफ़ का इस्तेमाल करना चाहिए. Cloud Storage के दस्तावेज़ में, इसके काम करने के तरीके और पसंदीदा एल्गोरिदम के बारे में अच्छी तरह से बताया गया है. अगर Google क्लाइंट लाइब्रेरी का इस्तेमाल किया जा रहा है, तो आम तौर पर यह काम आपके लिए अपने-आप हो जाएगा. अपनी लाइब्रेरी के दस्तावेज़ देखें. आम तौर पर, आपको अपनी लाइब्रेरी लिखने के बजाय, लाइब्रेरी के लागू होने का इस्तेमाल करना चाहिए.
ट्रैफ़िक पैटर्न को किसी भी क्रम में लगाएं
कैलेंडर क्लाइंट में, एक ही समय पर कई क्लाइंट के ऑपरेशन करने की वजह से, ट्रैफ़िक के पैटर्न में अचानक बढ़ोतरी हो सकती है. उदाहरण के लिए, Calendar क्लाइंट के लिए, आधी रात को पूरा सिंक करना एक सामान्य खराब तरीका है. इससे हर मिनट के लिए तय किए गए आपके कोटे के खत्म होने की संभावना बढ़ जाती है. साथ ही, इससे दर सीमित हो जाती है और बैकऑफ़ की स्थिति पैदा हो जाती है.
ऐसा न हो, इसके लिए पक्का करें कि आपका ट्रैफ़िक पूरे दिन में फैला हो. अगर आपके क्लाइंट को हर दिन सिंक करना है, तो क्लाइंट को एक ऐसा समय तय करने के लिए कहें जो हर क्लाइंट के लिए अलग हो. अगर आपको नियमित तौर पर कोई कार्रवाई करनी है, तो इंटरवल में +/- 25% का अंतर रखें. इससे ट्रैफ़िक को ज़्यादा बेहतर तरीके से डिस्ट्रिब्यूट किया जा सकेगा और उपयोगकर्ताओं को बेहतर अनुभव मिलेगा.
पुश नोटिफ़िकेशन का इस्तेमाल करना
इसका एक सामान्य इस्तेमाल यह है कि जब भी उपयोगकर्ता के कैलेंडर में कोई बदलाव हो, तब कोई कार्रवाई की जाए. यहां एंटी-पैटर्न का मतलब है कि हर कैलेंडर को बार-बार पोल किया जाता है. इससे आपका पूरा कोटा बहुत जल्दी खत्म हो जाएगा. उदाहरण के लिए, अगर आपके ऐप्लिकेशन के 5,000 उपयोगकर्ता हैं और वह हर उपयोगकर्ता के कैलेंडर को हर मिनट में एक बार पोल करता है, तो काम शुरू होने से पहले ही, हर मिनट के लिए कम से कम 5,000 का कोटा ज़रूरी होगा.
सर्वर-साइड ऐप्लिकेशन, पुश नोटिफ़िकेशन के लिए रजिस्टर कर सकते हैं. इससे हमें आपकी दिलचस्पी के हिसाब से सूचनाएं भेजने में मदद मिलती है. इन्हें सेट अप करने में ज़्यादा समय लगता है. हालांकि, इनसे आपको अपने कोटे का ज़्यादा से ज़्यादा फ़ायदा मिलता है. साथ ही, उपयोगकर्ताओं को बेहतर अनुभव मिलता है. पक्का करें कि आपने उस eventType के बारे में बताया हो जिसके लिए आपको सूचना चाहिए. ज़्यादा जानकारी के लिए, पुश नोटिफ़िकेशन देखें.
सेवा खातों के साथ सही तरीके से हिसाब-किताब रखना
अगर आपका ऐप्लिकेशन, डोमेन-वाइड डेलिगेशन का इस्तेमाल करके अनुरोध करता है, तो डिफ़ॉल्ट रूप से "हर मिनट, हर प्रोजेक्ट, हर उपयोगकर्ता" के कोटे के लिए, सेवा खाते से शुल्क लिया जाता है. उस उपयोगकर्ता से नहीं जिसका इस्तेमाल करके अनुरोध किया जा रहा है. इसका मतलब है कि सेवा खाते का कोटा खत्म हो जाएगा और उस पर दर की सीमा लागू हो जाएगी. भले ही, वह कई उपयोगकर्ताओं के कैलेंडर पर काम कर रहा हो. quotaUser यूआरएल पैरामीटर (या x-goog-quota-user एचटीटीपी हेडर) का इस्तेमाल करके, यह बताया जा सकता है कि किस उपयोगकर्ता से शुल्क लिया जाएगा. इससे इस समस्या से बचा जा सकता है. इसका इस्तेमाल सिर्फ़ कोटे की गणना के लिए किया जाता है. ज़्यादा जानकारी के लिए, Cloud के दस्तावेज़ में हर उपयोगकर्ता के लिए अनुरोधों की संख्या सीमित करना देखें.
कोटे की सीमा को मैनेज करने की सुविधा की जांच करना
यह पक्का करने के लिए कि आपका ऐप्लिकेशन, कोटा की सीमाएं पूरी होने पर ठीक से काम कर सके (जैसे, एक्सपोनेंशियल बैकऑफ़ के साथ फिर से कोशिश करना) और आपके उपयोगकर्ताओं को किसी भी संभावित समस्या से बचाने के लिए, हमारा सुझाव है कि आप इस स्थिति को असली एनवायरमेंट में टेस्ट करें.
हमारा सुझाव है कि आप Google API Console में, सिर्फ़ टेस्ट के लिए एक अलग प्रोजेक्ट रजिस्टर करें. साथ ही, इसे अपने प्रोडक्शन प्रोजेक्ट की तरह कॉन्फ़िगर करें, ताकि इस तरह का टेस्ट आपके ऐप्लिकेशन के असली इस्तेमाल में कोई रुकावट न डाले. इसके बाद, इस प्रोजेक्ट के लिए आर्टिफ़िशियली कम कोटे सेट किए जा सकते हैं. साथ ही, अपने ऐप्लिकेशन के व्यवहार पर नज़र रखी जा सकती है.
कीमत
Google Calendar API का इस्तेमाल, बिना किसी अतिरिक्त शुल्क के किया जा सकता है. कोटा अनुरोध की सीमाओं से ज़्यादा अनुरोध करने पर, कोई अतिरिक्त शुल्क नहीं लिया जाता. साथ ही, आपके खाते से कोई शुल्क नहीं काटा जाता.