محدودیت‌های سهمیه

برای اطمینان از استفاده منصفانه و محافظت از پایداری سیستم، APIهای نمایه تجاری گوگل (GBP) سهمیه‌هایی را برای درخواست‌های API اعمال می‌کنند. اگر درخواست شما از حد سهمیه تجاوز کند، API با کد وضعیت HTTP 429 Too Many Requests (یا RESOURCE_EXHAUSTED برای gRPC) پاسخ می‌دهد.

محدودیت‌های سهمیه پیش‌فرض

جدول زیر محدودیت‌های استاندارد سهمیه برای APIهای پروفایل تجاری گوگل را فهرست می‌کند. این محدودیت‌ها در دو بُعد تعریف شده‌اند:

  • پرس‌وجو در هر دقیقه (QPM): با محدود کردن ترافیک پشت سر هم کوتاه‌مدت، از پایداری backend محافظت می‌کند.
  • پرس‌وجوها در هر روز (QPD): میزان استفاده کلی روزانه از پلتفرم را مدیریت می‌کند.
رابط برنامه‌نویسی کاربردی محدودیت‌ها
رابط برنامه‌نویسی کاربردی اطلاعات کسب و کار
  • درخواست‌های پیش‌فرض: ۳۰۰ QPM
  • ایجاد درخواست‌های موقعیت مکانی: 300 QPD
  • جستجو در گوگل درخواست‌های موقعیت مکانی: 300 کوارتر در روز
  • درخواست‌های به‌روزرسانی موقعیت مکانی: ۱۰۰۰۰ QPD
  • ویرایش‌ها: ۱۰ ویرایش در دقیقه برای هر نمایه تجاری گوگل (قابل افزایش نیست)
رابط برنامه‌نویسی کاربردی مدیریت حساب ۳۰۰ کوارتر در دقیقه
API عملکرد ۳۰۰ کوارتر در دقیقه
API تأییدها ۳۰۰ کوارتر در دقیقه
API اسکان ۳۰۰ کوارتر در دقیقه
API اقدامات مکانی ۳۰۰ کوارتر در دقیقه
API اعلان‌ها ۳۰۰ کوارتر در دقیقه

بهترین شیوه‌ها برای جلوگیری از خطاهای سهمیه‌بندی

پخش مداوم و یکنواخت درخواست‌هایتان در طول روز از اکثر خطاهای سهمیه‌بندی جلوگیری می‌کند. برای اطمینان از همگام‌سازی قابل اعتماد داده‌ها در برنامه‌تان، این بهترین شیوه‌ها را دنبال کنید.

درخواست‌های خود را به طور مساوی تنظیم کنید

به جای ارسال دسته بزرگی از درخواست‌ها به طور همزمان، درخواست‌های خود را در یک دوره طولانی‌تر توزیع کنید. به عنوان مثال، محدودیت ۳۰۰ QPM به طور متوسط ​​​​۵ درخواست در ثانیه را شامل می‌شود. ایجاد یک تأخیر کوتاه بین درخواست‌ها از افزایش ناگهانی ترافیک جلوگیری می‌کند.

Traffic distribution patterns:

Spiky traffic (Discouraged): High burst of requests followed by an idle period
Requests |   |||                 |||
         |   |||                 |||
         +---------------------------------
           Time ──>

Even traffic (Recommended): Consistent rate of requests over time
Requests |  |  |  |  |  |  |  |  |  |
         |  |  |  |  |  |  |  |  |  |
         +---------------------------------
           Time ──>
import time

# Pace requests to stay within the 300 QPM limit (5 requests/sec)
for request in batch_requests:
    send_request(request)
    time.sleep(0.2)  # 200ms delay ensures a smooth distribution

پیاده‌سازی backoff نمایی با jitter

وقتی خطای 429 Too Many Requests دریافت می‌کنید، از روش بازگشت نمایی (exponential backoff) به همراه jitter برای تلاش مجدد خودکار درخواست استفاده کنید. این روش استاندارد شامل انتظار برای یک دوره کوتاه و تصادفی قبل از تلاش مجدد و افزایش تدریجی تأخیر برای تلاش‌های بعدی است.

import random
import time
from googleapiclient.errors import HttpError

def call_api_with_retry(api_method, max_retries=5):
    base_delay = 1.0
    for attempt in range(max_retries):
        try:
            return api_method.execute()
        except HttpError as e:
            if e.resp.status == 429:
                if attempt == max_retries - 1:
                    raise e
                # Retry with exponential backoff and jitter
                sleep_time = random.uniform(0, base_delay * (2 ** attempt))
                time.sleep(sleep_time)
            else:
                raise e

بهینه‌سازی دسترسی به داده‌ها

  • داده‌های استاتیک را در حافظه پنهان (Cache) ذخیره کنید: داده‌هایی که به ندرت تغییر می‌کنند را به صورت محلی ذخیره کنید، به جای اینکه مرتباً از API کوئری بگیرید.
  • استفاده از اعلان‌های Pub/Sub: در اعلان‌های Pub/Sub مشترک شوید تا پایگاه‌های داده خود را بدون نیاز به نظرسنجی API، به‌صورت آنی به‌روزرسانی کنید.
  • پردازش متوالی نقاط پایانی با حجم خواندن بالا: از اجرای چندین درخواست همزمان به نقاط پایانی با حجم خواندن بالا مانند SearchListings خودداری کنید. در عوض، وظایف را به صورت متوالی با استفاده از توکن‌های صفحه‌بندی پردازش کنید.

درخواست افزایش سهمیه

قبل از درخواست افزایش سهمیه، الگوهای استفاده خود را در کنسول Google Cloud بررسی کنید تا مطمئن شوید حجم درخواست شما به طور غیرضروری خوشه‌بندی نشده است.

تیم نمایه کسب و کار گوگل، میانگین استفاده از سهمیه شما را رصد می‌کند تا اطمینان حاصل کند که از محدودیت‌های فعلی خود به طور مؤثر استفاده می‌کنید. درخواست‌های افزایش سهمیه معمولاً در موارد زیر رد می‌شوند:

  • برنامه شما به طور مداوم به حد مجاز QPM فعلی نمی‌رسد.
  • میانگین مصرف شما کمتر از ۵۰٪ از محدودیت فعلی QPM شماست.
  • برنامه شما به جای توزیع هموار، الگوی درخواست بسیار نامنظمی را نشان می‌دهد.

ارسال درخواست

اگر این بهترین شیوه‌ها را پیاده‌سازی کرده‌اید و هنوز به سهمیه بیشتری نیاز دارید، درخواست افزایش سهمیه ارسال کنید.

  1. از منوی کشویی، درخواست افزایش سهمیه را انتخاب کنید.
  2. نام شرکت ، ایمیل تماس و شماره پروژه خود را ارائه دهید.

پس از ارسال فرم، تیم نمایه کسب و کار گوگل درخواست شما را بررسی کرده و تعیین می‌کند که آیا افزایش سهمیه مناسب است یا خیر. در صورت تأیید درخواست، سهمیه افزایش می‌یابد. در صورت رد درخواست، دلیل رد درخواست به شما اطلاع داده خواهد شد.