حدود الاستخدام

بما أنّ واجهة Google Chat API هي خدمة مشتركة، نطبّق الحصص والقيود للتأكّد من استخدامها بشكل عادل من قِبل جميع المستخدمين ولحماية الأداء العام لخدمات Google Workspace.

إذا تجاوزت الحصة، ستتلقّى استجابة رمز حالة HTTP‏ 429: Too many requests. قد تؤدي عمليات التحقّق الإضافية من الحد الأقصى للمعدل في Chat الخلفية أيضًا إلى ظهور استجابة الخطأ نفسها. فإذا حدث هذا الخطأ، يجب استخدام خوارزمية تراجع أسي وإعادة المحاولة لاحقًا. وما دمت تلتزم بالحصص في الدقيقة والمذكورة في الجداول التالية، ما من حدّ أقصى لعدد الطلبات التي يمكنك إرسالها في اليوم.

ينطبق نوعان من الحصص على طرق Chat API: حصص لكل مساحة وحصص لكل مشروع.

الحصص لكل مساحة

تحدّ الحصص لكل مساحة من معدّل طلبات البحث في مساحة معيّنة، وتتم مشاركتها بين جميع تطبيقات Chat التي تعمل في تلك المساحة وتستدعي methods المُدرَجة في Chat API لكل حصة.

يوضّح الجدول التالي الحدود القصوى لطلبات البحث لكل مساحة:

الحصة لكل مساحة

طرق Chat API

الحد المسموح به (لكل 60 ثانية، تتم مشاركته
بين جميع تطبيقات Chat في المساحة)

عدد القراءات في الدقيقة

media.download

spaces.get

spaces.members.get

spaces.members.list

spaces.messages.get

spaces.messages.list

spaces.messages.attachments.get

spaces.messages.reactions.list

900

عدد الرسائل المكتوبة في الدقيقة

media.upload

spaces.delete

spaces.patch

spaces.messages.create (ينطبق أيضًا على الردود التلقائية الواردة على الويب)

spaces.messages.delete

spaces.messages.patch

spaces.messages.reactions.create

spaces.messages.reactions.delete

60

الحصص لكل مشروع

تحدّ الحصص لكل مشروع من معدّل طلبات البحث لمشروع Google Cloud، وبالتالي ينطبق ذلك على تطبيق Chat واحد يستدعي طرق Chat API المحدّدة لكل حصة.

يوضّح الجدول التالي الحدود القصوى لطلبات البحث لكل مشروع. يمكنك أيضًا العثور على هذه الحدود في صفحة الحصص.

الحصة لكل مشروع

طرق Chat API

الحدّ الأقصى المسموح به (لكل 60 ثانية)

عمليات كتابة الرسائل في الدقيقة

spaces.messages.create

spaces.messages.patch

spaces.messages.delete

3000

عدد مرات قراءة الرسائل في الدقيقة

spaces.messages.get

spaces.messages.list

3000

عمليات الكتابة في العضوية في الدقيقة

spaces.members.create

spaces.members.delete

300

عدد رسائل العضوية في الدقيقة

spaces.members.get

spaces.members.list

3000

عمليات الكتابة في المساحة في الدقيقة

spaces.setup

spaces.create

spaces.patch

spaces.delete

60

عدد مرات قراءة المساحة في الدقيقة

spaces.get

spaces.list

spaces.findDirectMessage

3000

عمليات كتابة المرفقات في الدقيقة

media.upload

600

عدد مرّات قراءة المرفق في الدقيقة

spaces.messages.attachments.get

media.download

3000

عدد عمليات كتابة التفاعل في الدقيقة

spaces.messages.reactions.create

spaces.messages.reactions.delete

600

عدد مرّات قراءة التفاعل في الدقيقة

spaces.messages.reactions.list

3000

حدود استخدام إضافية

هناك حدود للحصص الإضافية لإنشاء مساحات من النوع GROUP_CHAT أو SPACE (باستخدام الطريقة spaces.create أو spaces.setup). إنشاء أقل من 35 مساحة في الدقيقة و800 مساحة في الساعة من هذه الأنواع لا تخضع المساحات من النوع DIRECT_MESSAGE لحدود الحصة الإضافية هذه.

إنّ ارتفاع عدد زيارات واجهة برمجة التطبيقات التي تستهدف المساحة نفسها يمكن أن يؤدي إلى تفعيل حدود داخلية إضافية لا تظهر في صفحة الحصص.

حلّ أخطاء الحصة المستندة إلى الوقت

بالنسبة إلى جميع الأخطاء المستندة إلى الوقت (الحد الأقصى لطلبات N كل X دقائق)، ننصح بأن يرصد الرمز البرمجي الاستثناء ويستخدم وقت انتظار متزايد مقطوع للتأكّد من عدم توليد أجهزتك لحمل زائد.

إنّ التأخير المتزايد هو استراتيجية معالجة أخطاء عادية لتطبيقات الشبكة. تعيد خوارزمية التراجع الأسي الطلبات باستخدام أوقات انتظار متزايدة بشكلٍ تصاعدي بين الطلبات، حتى الحد الأقصى لوقت التراجع. إذا استمرت الطلبات غير ناجحة، من المهم زيادة فترات التأخير بين الطلبات بمرور الوقت إلى أن يصبح الطلب ناجحًا.

مثال على الخوارزمية

تعيد خوارزمية التراجع الأسي الطلبات بشكلٍ أسي، ما يؤدي إلى زيادة وقت الانتظار بين عمليات إعادة المحاولة إلى الحد الأقصى لوقت التراجع. على سبيل المثال:

  1. أرسِل طلبًا إلى Google Chat API.
  2. إذا تعذّر إكمال الطلب، انتظِر random_number_milliseconds ثانية ثم أعِد محاولة إكماله.
  3. إذا تعذّر إكمال الطلب، انتظِر 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. لا تحتاج عمليات إعادة المحاولة بعد هذه المرحلة إلى مواصلة زيادة وقت الانتظار. على سبيل المثال، إذا كان العميل يستخدم وقت maximum_backoff مدته 64 ثانية، يمكن للعميل إعادة المحاولة كل 64 ثانية بعد الوصول إلى هذه القيمة. في مرحلة ما، يجب منع العملاء من إعادة المحاولة إلى أجل غير مسمى.

يعتمد وقت الانتظار بين عمليات إعادة المحاولة وعدد عمليات إعادة المحاولة على حالة الاستخدام وظروف الشبكة.

طلب زيادة الحصة لكل مشروع

استنادًا إلى استخدام مشروعك للموارد، قد تحتاج إلى طلب زيادة الحصة. يتم اعتبار طلبات البيانات من واجهة برمجة التطبيقات من خلال حساب الخدمة على أنّها تستخدم حسابًا واحدًا. لا يضمن التقدم بطلب للحصول على حصة زائدة الموافقة. قد تستغرق زيادات الحصة الكبيرة وقتًا أطول للموافقة عليها.

ليست كل المشروعات لها الحصص نفسها. مع زيادة استخدامك لخدمة Google Cloud بمرور الوقت، قد تحتاج إلى زيادة حصصك. إذا كنت تتوقّع ازديادًا ملحوظًا في استخدام الخدمة في المستقبل، يمكنك بشكل استباقي طلب تعديلات على الحصص من صفحة "الحصص" في Google Cloud Console.

لمزيد من المعلومات، يُرجى الاطّلاع على المراجع التالية: