بهترین روش ها و محدودیت ها

هنگام استفاده از BatchJobService ، این دستورالعمل ها را در نظر بگیرید.

بهبود توان عملیاتی

  • مشاغل بزرگتر کمتر بر بسیاری از مشاغل کوچکتر ترجیح داده می شوند.

  • عملیات آپلود شده را بر اساس نوع عملیات سفارش دهید. به عنوان مثال، اگر شغل شما شامل عملیات افزودن کمپین ها، گروه های تبلیغاتی و معیارهای گروه تبلیغاتی است، عملیات آپلود خود را به گونه ای ترتیب دهید که ابتدا همه عملیات کمپین ، سپس همه عملیات گروه تبلیغات و در نهایت همه گروه های تبلیغاتی قرار گیرند. عملیات معیار .

  • در عملیات‌های مشابه، می‌تواند عملکرد را برای گروه‌بندی آنها بر اساس منبع والد بهبود بخشد. به عنوان مثال، اگر شما یک سری از اشیاء AdGroupCriterionOperation دارید، گروه بندی عملیات بر اساس گروه آگهی به جای اختلاط عملیاتی که بر معیارهای گروه آگهی در گروه های تبلیغاتی مختلف تأثیر می گذارد، می تواند کارآمدتر باشد.

از مسائل همزمانی اجتناب کنید

  • هنگام ارسال چندین کار همزمان برای یک حساب، سعی کنید احتمال انجام کارهای همزمان بر روی یک شیء مشابه را کاهش دهید و در عین حال اندازه کار بزرگ را حفظ کنید. بسیاری از کارهای ناتمام که وضعیت RUNNING را دارند، سعی می کنند مجموعه ای از اشیاء مشابه را تغییر دهند، که می تواند منجر به شرایط بن بست مانند شود که منجر به کندی شدید و حتی شکست شغلی شود.

  • چندین عملیات را ارسال نکنید که یک شیء مشابه را در یک کار جهش می دهد، زیرا نتیجه می تواند غیرقابل پیش بینی باشد.

بازیابی نتایج بهینه

  • وضعیت شغلی را خیلی مکرر نظرسنجی نکنید وگرنه در معرض خطر خطاهای محدودیت نرخ هستید.

  • بیش از 1000 نتیجه در هر صفحه بازیابی نکنید. سرور ممکن است به دلیل بارگذاری یا عوامل دیگر کمتر از آن بازگردد.

  • ترتیب نتایج مانند ترتیب آپلود خواهد بود.

راهنمای استفاده اضافی

  • می‌توانید یک کران بالا برای مدت زمانی که یک کار دسته‌ای مجاز است قبل از لغو شدن اجرا شود تعیین کنید. هنگام ایجاد یک کار دسته‌ای جدید، فیلد metadata.execution_limit_seconds را روی محدودیت زمانی دلخواه خود در چند ثانیه تنظیم کنید. اگر metadata.execution_limit_seconds تنظیم نشده باشد، محدودیت زمانی پیش‌فرض وجود ندارد.

  • توصیه می شود در هر AddBatchJobOperationsRequest بیش از 1000 عملیات اضافه نکنید و از sequence_token برای آپلود بقیه عملیات در همان کار استفاده کنید. بسته به محتوای عملیات، تعداد زیادی عملیات در یک AddBatchJobOperationsRequest می‌تواند باعث خطای REQUEST_TOO_LARGE شود. با کاهش تعداد عملیات و امتحان مجدد AddBatchJobOperationsRequest می توانید این خطا را مدیریت کنید.

محدودیت ها

  • هر BatchJob تا یک میلیون عملیات را پشتیبانی می کند.

  • هر حساب می تواند تا 100 شغل فعال یا در حال انتظار را به طور همزمان داشته باشد.

  • مشاغل معلق قدیمی تر از 7 روز به طور خودکار حذف می شوند.

  • هر AddBatchJobOperationsRequest حداکثر اندازه 10484504 بایت دارد. اگر از این مقدار بیشتر شوید، یک INTERNAL_ERROR دریافت خواهید کرد. شما می توانید اندازه درخواست را قبل از ارسال تعیین کنید و در صورت بزرگ بودن آن اقدام مناسب را انجام دهید.

    جاوا

    
    static final int MAX_REQUEST_BYTES = 10_484_504;
    
    ... (code to get the request object)
    
    int sizeInBytes = request.getSerializedSize();
    

    پایتون

    
    from google.ads.googleads.client import GoogleAdsClient
    
    MAX_REQUEST_BYTES = 10484504
    
    ... (code to get the request object)
    
    size_in_bytes = request._pb.ByteSize()
    

    روبی

    
    require 'google/ads/google_ads'
    
    MAX_REQUEST_BYTES = 10484504
    
    ... (code to get the request object)
    
    size_in_bytes = request.to_proto.bytesize
    

    PHP

    
    use Google\Ads\GoogleAds\V16\Resources\Campaign;
    
    const MAX_REQUEST_BYTES = 10484504;
    
    ... (code to get the request object)
    
    $size_in_bytes = $campaign->byteSize() . PHP_EOL;
    

    دات نت

    
    using Google.Protobuf;
    const int MAX_REQUEST_BYTES = 10484504;
    
    ... (code to get the request object)
    
    int sizeInBytes = request.ToByteArray().Length;
    

    پرل

    
    use Devel::Size qw(total_size);
    use constant MAX_REQUEST_BYTES => 10484504;
    
    ... (code to get the request object)
    
    my $size_in_bytes = total_size($request);