כדאי להביא בחשבון את ההנחיות הבאות כשמשתמשים
BatchJobService
שיפור התפוקה
עדיף שיהיו פחות משרות גדולות על פני הרבה משרות קטנות יותר.
הפעולות שהועלו בהזמנה לפי סוג הפעולה. לדוגמה, אם התפקיד שלכם מכיל פעולות להוספת קמפיינים, קבוצות מודעות וקריטריונים של קבוצת מודעות, לסדר את הפעולות בהעלאה כך שכל הקמפיין הפעולות ראשונות, ואחריהן כל פעולות של קבוצת מודעות ולבסוף פעולות בקריטריונים של קבוצת מודעות.
במסגרת פעולות מאותו סוג, אפשר לשפר את הביצועים על ידי קיבוץ לפי משאב הורה. לדוגמה, אם יש לכם סדרה של
AdGroupCriterionOperation
אובייקטים, אפשר לקבץ בצורה יעילה יותר פעולות לפי קבוצת מודעות, במקום פעולות שילוב שמשפיעות על המודעה קריטריונים לקבוצות שונות של מודעות.
מניעת בעיות בו-זמניות (concurrency)
כששולחים כמה משימות בו-זמנית לאותו חשבון, צריך לנסות לצמצם את הסבירות שמשימות יפעלו על אותם אובייקטים בו-זמנית, לשמור על עובדים גדולים. עבודות רבות שלא הסתיימו (עם סטטוס של
RUNNING
) ש ניסיון לשנות את אותה קבוצת אובייקטים עלול להוביל לתנאים דמויי קיפאון שמוביל להאטה חמורה ואפילו כשלים במשימות.אסור לשלוח כמה פעולות שמשנות את אותו אובייקט באותו אובייקט כי הוא עלול להיות בלתי צפוי.
אחזור תוצאות באופן אופטימלי
אסור לדגום את סטטוס המשרה בתדירות גבוהה מדי, אחרת אתם עלולים להגיע למגבלת הקצב של יצירת הבקשות שגיאות.
אל תאחזרו יותר מ-1,000 תוצאות בדף. השרת יכול לחזור פחות מכך עקב עומס או גורמים אחרים.
סדר התוצאות יהיה זהה לסדר ההעלאה.
הנחיות נוספות לשימוש
אתם יכולים להגדיר גבול עליון למשך הזמן שבו משימה באצווה מורשית לפעול לפני מתבצע ביטול. כשיוצרים משימה חדשה באצווה, צריך להגדיר
metadata.execution_limit_seconds
למגבלת הזמן המועדפת, בשניות. אין מועד ברירת מחדל מוגבלת אם הערךmetadata.execution_limit_seconds
לא מוגדר.מומלץ להוסיף עד 1,000 פעולות לכל
AddBatchJobOperationsRequest
ולהשתמש בsequence_token
כדי להעלות את שאר הפעולות לאותה המשימה. בהתאם לתרחיש לדוגמה יותר מדי פעולות באותה פעולה,AddBatchJobOperationsRequest
עלול לגרום לשגיאהREQUEST_TOO_LARGE
. שלך יכול לטפל בשגיאה הזו על ידי צמצום מספר הפעולות וניסיונות חוזריםAddBatchJobOperationsRequest
מגבלות
כל
BatchJob
תומך במיליון לכל היותר. ב-AI.כל חשבון יכול לכלול עד 100 משימות פעילות או ממתינות בו-זמנית.
משימות בהמתנה מלפני יותר מ-7 ימים יוסרו באופן אוטומטי.
כל
AddBatchJobOperationsRequest
הגודל המקסימלי הוא 10,484,504 בייטים. אם תחרגו מהמכסה, תקבלוINTERNAL_ERROR
. אפשר לקבוע את גודל הבקשה לפני שליחה ולנקוט פעולה מתאימה אם הוא גדול מדי.Java
static final int MAX_REQUEST_BYTES = 10_484_504; ... (code to get the request object) int sizeInBytes = request.getSerializedSize();
Python
from google.ads.googleads.client import GoogleAdsClient MAX_REQUEST_BYTES = 10484504 ... (code to get the request object) size_in_bytes = request._pb.ByteSize()
Ruby
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;
.NET
using Google.Protobuf; const int MAX_REQUEST_BYTES = 10484504; ... (code to get the request object) int sizeInBytes = request.ToByteArray().Length;
Perl
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);