इस्तेमाल करने की सीमा

Gmail API के इस्तेमाल पर कुछ पाबंदियां लागू होती हैं. इन पाबंदियों के तहत, यह तय किया जाता है कि एपीआई के तरीकों को किस दर से कॉल किया जा सकता है. सीमाएं, कोटा यूनिट के हिसाब से तय की जाती हैं. यह एक ऐब्स्ट्रैक्ट यूनिट है, जो Gmail के संसाधनों के इस्तेमाल को दिखाती है. इस्तेमाल करने की दो सीमाएं हैं, जो एक साथ लागू होती हैं: हर प्रोजेक्ट के लिए दर की सीमा और हर उपयोगकर्ता के लिए दर की सीमा.

यहां दी गई टेबल में, इन सीमाओं के बारे में बताया गया है:

इस्तेमाल की सीमा का टाइप सीमा गड़बड़ी का कोड
हर प्रोजेक्ट के लिए दर की सीमा हर मिनट में 12,00,000 कोटा यूनिट rateLimitExceeded
हर उपयोगकर्ता के लिए दर की सीमा हर उपयोगकर्ता के लिए, हर मिनट 15,000 कोटा यूनिट userRateLimitExceeded

सीमा से जुड़ी गड़बड़ियों को ठीक करने के बारे में जानकारी के लिए, गड़बड़ियां ठीक करना लेख पढ़ें.

हर तरीके के लिए कोटे का इस्तेमाल

किसी अनुरोध के लिए इस्तेमाल की गई कोटा यूनिट की संख्या, कॉल किए गए तरीके के हिसाब से अलग-अलग होती है. इस टेबल में, हर तरीके के लिए कोटा यूनिट के इस्तेमाल के बारे में बताया गया है:

तरीका कोटा इकाईयाँ
drafts.create 10
drafts.delete 10
drafts.get 5
drafts.list 5
drafts.send 100
drafts.update 15
getProfile 1
history.list 2
labels.create 5
labels.delete 5
labels.get 1
labels.list 1
labels.update 5
messages.attachments.get 5
messages.batchDelete 50
messages.batchModify 50
messages.delete 10
messages.get 5
messages.import 25
messages.insert 25
messages.list 5
messages.modify 5
messages.send 100
messages.trash 5
messages.untrash 5
settings.delegates.create 100
settings.delegates.delete 5
settings.delegates.get 1
settings.delegates.list 1
settings.filters.create 5
settings.filters.delete 5
settings.filters.get 1
settings.filters.list 1
settings.forwardingAddresses.create 100
settings.forwardingAddresses.delete 5
settings.forwardingAddresses.get 1
settings.forwardingAddresses.list 1
settings.getAutoForwarding 1
settings.getImap 1
settings.getPop 1
settings.getVacation 1
settings.sendAs.create 100
settings.sendAs.delete 5
settings.sendAs.get 1
settings.sendAs.list 1
settings.sendAs.update 100
settings.sendAs.verify 100
settings.updateAutoForwarding 5
settings.updateImap 5
settings.updatePop 100
settings.updateVacation 5
stop 50
threads.delete 20
threads.get 10
threads.list 10
threads.modify 10
threads.trash 10
threads.untrash 10
watch 100

Gmail API का इस्तेमाल करते समय, हर ईमेल मैसेज के लिए 500 लोगों को ईमेल भेजने की सीमा भी होती है.

समय के हिसाब से तय किए गए कोटे से जुड़ी गड़बड़ियां ठीक करना

समय के हिसाब से होने वाली सभी गड़बड़ियों (हर X मिनट में ज़्यादा से ज़्यादा N अनुरोध) के लिए, हमारा सुझाव है कि आपका कोड अपवाद को पकड़ ले और ट्रंकेटेड एक्सपोनेंशियल बैकऑफ़ का इस्तेमाल करे. इससे यह पक्का किया जा सकेगा कि आपके डिवाइस ज़्यादा लोड जनरेट न करें.

एक्सपोनेंशियल बैकऑफ़, नेटवर्क ऐप्लिकेशन के लिए गड़बड़ी ठीक करने की एक स्टैंडर्ड रणनीति है. एक्सपोनेंशियल बैकऑफ़ एल्गोरिदम, अनुरोधों को फिर से भेजने की कोशिश करता है. इसके लिए, अनुरोधों के बीच इंतज़ार का समय तेज़ी से बढ़ता जाता है. यह इंतज़ार का ज़्यादा से ज़्यादा समय तक होता है. अगर अनुरोध अब भी पूरे नहीं हो रहे हैं, तो यह ज़रूरी है कि अनुरोधों के बीच का समय धीरे-धीरे बढ़ता जाए, ताकि अनुरोध पूरा हो सके.

एल्गोरिदम का उदाहरण

एक्सपोनेंशियल बैकऑफ़ एल्गोरिदम, अनुरोधों को बार-बार करता है. साथ ही, यह कोशिशों के बीच इंतज़ार के समय को बढ़ाता है. यह इंतज़ार का समय, बैकऑफ़ के ज़्यादा से ज़्यादा समय तक बढ़ सकता है. उदाहरण के लिए:

  1. Gmail API से अनुरोध करें.
  2. अगर अनुरोध पूरा नहीं होता है, तो 1 + random_number_milliseconds सेकंड इंतज़ार करें और फिर से अनुरोध करें.
  3. अगर अनुरोध पूरा नहीं होता है, तो 2 + random_number_milliseconds सेकंड इंतज़ार करें और फिर से अनुरोध करें.
  4. अगर अनुरोध पूरा नहीं होता है, तो 4 + random_number_milliseconds सेकंड इंतज़ार करें और फिर से अनुरोध करें.
  5. और इसी तरह, maximum_backoff बार तक.
  6. कुछ समय तक इंतज़ार करें और ज़्यादा से ज़्यादा बार कोशिश करें. हालांकि, कोशिशों के बीच इंतज़ार की अवधि न बढ़ाएं.

कहां:

  • आपको min(((2^n)+random_number_milliseconds), maximum_backoff) तक इंतज़ार करना होगा. हर बार अनुरोध करने पर, n में 1 की बढ़ोतरी होती है.
  • random_number_milliseconds, 1,000 से कम या इसके बराबर मिलीसेकंड की कोई रैंडम संख्या है. इससे उन मामलों से बचने में मदद मिलती है जिनमें कई क्लाइंट किसी स्थिति के हिसाब से सिंक हो जाते हैं और सभी एक साथ फिर से कोशिश करते हैं. इससे अनुरोध, सिंक की गई वेव में भेजे जाते हैं. फिर से कोशिश करने के हर अनुरोध के बाद, random_number_milliseconds की वैल्यू फिर से कैलकुलेट की जाती है.
  • maximum_backoff की अवधि आम तौर पर 32 या 64 सेकंड होती है. सही वैल्यू, इस्तेमाल के उदाहरण पर निर्भर करती है.

maximum_backoff बार कोशिश करने के बाद भी, क्लाइंट फिर से कोशिश कर सकता है. इस पॉइंट के बाद, फिर से कोशिश करने पर बैकऑफ़ टाइम को बढ़ाने की ज़रूरत नहीं होती. उदाहरण के लिए, अगर कोई क्लाइंट 64 सेकंड का maximum_backoff इस्तेमाल करता है, तो इस वैल्यू तक पहुंचने के बाद, क्लाइंट हर 64 सेकंड में फिर से कोशिश कर सकता है. किसी समय, क्लाइंट को बार-बार कोशिश करने से रोका जाना चाहिए.

फिर से कोशिश करने के बीच इंतज़ार करने का समय और फिर से कोशिश करने की संख्या, आपके इस्तेमाल के उदाहरण और नेटवर्क की स्थितियों पर निर्भर करती है.

कीमत

Gmail API का इस्तेमाल मुफ़्त में किया जा सकता है. कोटा अनुरोध की सीमाओं से ज़्यादा अनुरोध करने पर, कोई अतिरिक्त शुल्क नहीं लिया जाता. साथ ही, आपके खाते से कोई शुल्क नहीं काटा जाता.

कोटा बढ़ाने का अनुरोध करना

प्रोजेक्ट में इस्तेमाल किए गए संसाधनों के आधार पर, हो सकता है कि आपको कोटा में बदलाव करने का अनुरोध करना पड़े. सेवा खाते से किए गए एपीआई कॉल को एक ही खाते से किया गया कॉल माना जाता है. बदले गए कोटे के लिए आवेदन करने का मतलब यह नहीं है कि आपको मंज़ूरी मिल जाएगी. कोटा अडजस्ट करने के ऐसे अनुरोधों को मंज़ूरी मिलने में ज़्यादा समय लग सकता है जिनसे कोटा वैल्यू में काफ़ी बढ़ोतरी होती है.

सभी प्रोजेक्ट के लिए, एक जैसे कोटा उपलब्ध नहीं होते. समय के साथ-साथ Google Cloud का इस्तेमाल बढ़ने पर, आपको कोटा की वैल्यू बढ़ाने की ज़रूरत पड़ सकती है. अगर आपको लगता है कि आने वाले समय में आपके इस्तेमाल में काफ़ी बढ़ोतरी होने वाली है, तो Google Cloud Console में कोटा पेज पर जाकर, कोटा में बदलाव करने का अनुरोध किया जा सकता है.

ज़्यादा जानने के लिए, यहां दिए गए संसाधन देखें: