هنگام استفاده از 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);