هنگام استفاده از BatchJobService
این دستورالعملها را در نظر بگیرید.
بهبود توان عملیاتی
تعداد کمتر کارهای بزرگتر نسبت به تعداد زیاد کارهای کوچکتر ترجیح داده میشود.
عملیات آپلود شده را بر اساس نوع عملیات مرتب کنید. به عنوان مثال، اگر کار شما شامل عملیات اضافه کردن کمپینها، گروههای تبلیغاتی و معیارهای گروه تبلیغاتی است، عملیات موجود در آپلود خود را طوری مرتب کنید که ابتدا همه عملیات کمپین ، سپس همه عملیات گروه تبلیغاتی و در نهایت همه عملیات معیارهای گروه تبلیغاتی قرار گیرند.
در عملیاتهای هم نوع، گروهبندی آنها بر اساس منبع والد میتواند عملکرد را بهبود بخشد. به عنوان مثال، اگر مجموعهای از اشیاء
AdGroupCriterionOperation
دارید، گروهبندی عملیات بر اساس گروه تبلیغاتی میتواند کارآمدتر از ترکیب عملیاتی باشد که بر معیارهای گروه تبلیغاتی در گروههای تبلیغاتی مختلف تأثیر میگذارند.
از مشکلات همزمانی جلوگیری کنید
هنگام ارسال چندین کار همزمان برای یک حساب کاربری، سعی کنید احتمال اجرای همزمان کارها روی اشیاء مشابه را کاهش دهید، در حالی که اندازه کارهای بزرگ را حفظ کنید. بسیاری از کارهای ناتمام، که وضعیت در
RUNNING
دارند، سعی میکنند مجموعه اشیاء یکسانی را تغییر دهند، که میتواند منجر به شرایط بنبست مانند شود و در نتیجه سرعت کار به شدت کاهش یابد و حتی کار از کار بیفتد.چندین عملیات که یک شیء را در یک کار تغییر میدهند، ارسال نکنید، زیرا نتیجه میتواند غیرقابل پیشبینی باشد.
بازیابی نتایج به صورت بهینه
وضعیت کار را خیلی مرتب بررسی نکنید، وگرنه با خطاهای مربوط به محدودیت نرخ مواجه میشوید.
بیش از ۱۰۰۰ نتیجه در هر صفحه بازیابی نکنید. سرور میتواند به دلیل حجم کاری یا عوامل دیگر، کمتر از این مقدار را برگرداند.
ترتیب نتایج مشابه ترتیب آپلود خواهد بود.
راهنمایی استفاده اضافی
شما میتوانید برای مدت زمانی که یک کار دستهای قبل از لغو شدن اجازه اجرا دارد، یک حد بالا تعیین کنید. هنگام ایجاد یک کار دستهای جدید، فیلد
metadata.execution_limit_seconds
را روی محدودیت زمانی دلخواه خود، بر حسب ثانیه، تنظیم کنید. اگرmetadata.execution_limit_seconds
تنظیم نشده باشد، هیچ محدودیت زمانی پیشفرضی وجود ندارد.توصیه میشود که در هر
AddBatchJobOperationsRequest
بیش از ۱۰۰۰ عملیات اضافه نکنید و ازsequence_token
برای آپلود بقیه عملیات به همان job استفاده کنید. بسته به محتوای عملیات، تعداد زیاد عملیات در یکAddBatchJobOperationsRequest
میتواند باعث خطایREQUEST_TOO_LARGE
شود. میتوانید با کاهش تعداد عملیات و تلاش مجددAddBatchJobOperationsRequest
، این خطا را مدیریت کنید.
محدودیتها
هر
BatchJob
تا یک میلیون عملیات را پشتیبانی میکند.هر حساب کاربری میتواند تا ۱۰۰ شغل فعال یا در انتظار را به طور همزمان داشته باشد.
کارهای در حال انتظار که بیش از ۷ روز از تاریخ انقضای آنها گذشته باشد، به طور خودکار حذف میشوند.
از نسخه ۲۲، هر درخواست
AddBatchJobOperations
محدودیت ۱۰،۰۰۰ عملیات جهش در هر درخواست را دارد.از نسخه ۲۲، برای فیلد
page_size
درListBatchJobResultsRequest
:- اگر
page_size
تنظیم نشده باشد یا 0 باشد، به طور پیشفرض روی حداکثر 1000 قرار میگیرد. - اگر
page_size
از ۱۰۰۰ بیشتر یا از ۰ کمتر باشد، API خطایINVALID_PAGE_SIZE
را برمیگرداند.
- اگر
هر
AddBatchJobOperationsRequest
حداکثر اندازه 10,484,504 بایت دارد. اگر از این مقدار تجاوز کنید، خطای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
پی اچ پی
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);