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