BatchJobService का इस्तेमाल करते समय, इन दिशा-निर्देशों का ध्यान रखें.
थ्रूपुट को बेहतर बनाना
कई छोटे-छोटे कामों के बजाय, कम बड़े काम करना बेहतर होता है.
कार्रवाई के टाइप के हिसाब से, अपलोड की गई कार्रवाइयों को क्रम से लगाएं. उदाहरण के लिए, अगर आपके काम में कैंपेन, विज्ञापन ग्रुप, और विज्ञापन ग्रुप के मानदंड जोड़ने के लिए कार्रवाइयां शामिल हैं, तो अपलोड में कार्रवाइयों को इस तरह से क्रम में लगाएं कि सभी कैंपेन कार्रवाइयां पहले हों. इसके बाद, सभी विज्ञापन ग्रुप कार्रवाइयां और आखिर में सभी विज्ञापन ग्रुप के मानदंड से जुड़ी कार्रवाइयां हों.
एक ही तरह के ऑपरेशन के लिए, उन्हें पैरंट रिसॉर्स के हिसाब से ग्रुप करने पर परफ़ॉर्मेंस बेहतर हो सकती है. उदाहरण के लिए, अगर आपके पास
AdGroupCriterionOperationऑब्जेक्ट की एक सीरीज़ है, तो विज्ञापन ग्रुप के हिसाब से कार्रवाइयों को ग्रुप करना ज़्यादा असरदार हो सकता है. ऐसा इसलिए, क्योंकि अलग-अलग विज्ञापन ग्रुप में विज्ञापन ग्रुप के मानदंड पर असर डालने वाली कार्रवाइयों को आपस में मिलाने से बेहतर नतीजे मिलते हैं.
बैच स्प्लिटिंग में एटॉमिकिटी
Google Ads API, सबमिट किए गए बैच जॉब में मौजूद कार्रवाइयों को प्रोसेस करने के लिए, उन्हें छोटे-छोटे सब-बैच में बांट सकता है. अगर आपने एक जैसी कार्रवाइयों को ग्रुप नहीं किया है, तो Google Ads API इन कार्रवाइयों को अलग-अलग सब-बैच में बांट सकता है. जैसे, AssetGroup और AdGroup में लिस्टिंग ग्रुप में किए गए बदलावों को बैच जॉब में एक साथ नहीं रखा गया है. इस वजह से, हो सकता है कि बदलाव न हो पाए या खाते की स्थिति में कोई बदलाव न हो.
लॉजिकल ग्रुपिंग
AssetGroupListingGroupFilterOperation
किसी AssetGroup में लिस्टिंग ग्रुप मैनेज करता है. यह परफ़ॉर्मेंस मैक्स कैंपेन में आम बात है.
AdGroupCriterionOperation, AdGroup में मौजूद लिस्टिंग ग्रुप को मैनेज करता है. यह स्टैंडर्ड शॉपिंग कैंपेन में आम बात है. इन दोनों का इस्तेमाल, प्रॉडक्ट टारगेटिंग को तय करने के लिए किया जाता है. अगर आपको ऐसे बदलाव करने हैं जिनसे दोनों कॉन्टेक्स्ट में प्रॉडक्ट टारगेटिंग के क्रम पर असर पड़ता है, तो इन कार्रवाइयों को अपने बैच जॉब में क्रम से ग्रुप करें. इससे यह पक्का किया जा सकेगा कि ये कार्रवाइयां एक साथ लागू हों.
डेटा में एकरूपता
डेटा में एकरूपता बनाए रखने और आंशिक अपडेट को रोकने के लिए, बैच जॉब में एक के बाद एक करके, मिलती-जुलती लिस्टिंग ग्रुप कार्रवाइयां जोड़ें. इस क्रम से, एपीआई के बैच स्प्लिटिंग लॉजिक के हिसाब से उन्हें छोटे-छोटे सब-बैच में ग्रुप करने में मदद मिलती है. इससे आपका खाता, किसी भी तरह की गड़बड़ी से बचा रहता है.
एक साथ कई अनुरोध मिलने से जुड़ी समस्याओं से बचना
एक ही खाते के लिए एक साथ कई जॉब सबमिट करते समय, इस बात का ध्यान रखें कि एक ही समय में एक ही ऑब्जेक्ट पर काम करने वाली जॉब की संख्या कम हो. साथ ही, जॉब का साइज़ बड़ा हो. कई ऐसे जॉब हैं जो पूरे नहीं हुए हैं और जिनका स्टेटस
RUNNINGहै. ये सभी जॉब, एक ही सेट के ऑब्जेक्ट में बदलाव करने की कोशिश करते हैं. इससे डेडलॉक जैसी स्थितियां पैदा हो सकती हैं. इसकी वजह से, प्रोसेस बहुत धीमी हो जाती है और जॉब पूरे नहीं हो पाते.एक ही जॉब में, एक ही ऑब्जेक्ट में बदलाव करने वाली कई कार्रवाइयां सबमिट न करें. ऐसा करने पर, नतीजे का अनुमान नहीं लगाया जा सकता.
नतीजे बेहतर तरीके से पाना
जॉब की स्थिति के बारे में बार-बार जानकारी न लें. ऐसा करने पर, आपको दर की सीमा से जुड़ी गड़बड़ियां मिल सकती हैं.
हर पेज पर 1,000 से ज़्यादा नतीजे न पाएं. सर्वर, लोड या अन्य वजहों से इससे कम कुकी वापस भेज सकता है.
नतीजों का क्रम, अपलोड किए गए डेटा के क्रम जैसा ही होगा.
इस्तेमाल से जुड़ी अन्य जानकारी
आपके पास यह तय करने का विकल्प होता है कि बैच जॉब को रद्द करने से पहले, उसे कितनी देर तक चलने की अनुमति दी जाए. नया बैच जॉब बनाते समय,
metadata.execution_limit_secondsफ़ील्ड को अपनी पसंद के मुताबिक समयसीमा पर सेट करें. यह समयसीमा सेकंड में होती है. अगरmetadata.execution_limit_secondsसेट नहीं है, तो समयसीमा की कोई डिफ़ॉल्ट वैल्यू नहीं होती.हमारा सुझाव है कि हर
AddBatchJobOperationsRequestमें 1,000 से ज़्यादा कार्रवाइयां न जोड़ें. साथ ही, बाकी कार्रवाइयों को उसी जॉब में अपलोड करने के लिए,sequence_tokenका इस्तेमाल करें. कार्रवाइयों के कॉन्टेंट के आधार पर, एकAddBatchJobOperationsRequestमें बहुत ज़्यादा कार्रवाइयां होने पर,REQUEST_TOO_LARGEगड़बड़ी हो सकती है. इस गड़बड़ी को ठीक करने के लिए, कार्रवाइयों की संख्या कम करें औरAddBatchJobOperationsRequestको फिर से आज़माएं.
सीमाएं
हर
BatchJobमें ज़्यादा से ज़्यादा 10 लाख ऑपरेशन किए जा सकते हैं.हर खाते में एक समय पर ज़्यादा से ज़्यादा 100 नौकरियां चालू या लंबित हो सकती हैं.
सात दिन से ज़्यादा समय से प्रोसेस नहीं किए गए जॉब अपने-आप हट जाते हैं.
v22 के मुताबिक, हर
AddBatchJobOperationsअनुरोध में, हर अनुरोध के लिए 10,000 बदलाव करने की कार्रवाइयां की जा सकती हैं.v22 के मुताबिक,
ListBatchJobResultsRequestमें मौजूदpage_sizeफ़ील्ड के लिए:- अगर
page_sizeको सेट नहीं किया गया है या इसकी वैल्यू 0 है, तो डिफ़ॉल्ट रूप से इसकी वैल्यू ज़्यादा से ज़्यादा 1,000 होगी. - अगर
page_sizeकी वैल्यू 1,000 से ज़्यादा या 0 से कम है, तो एपीआईINVALID_PAGE_SIZEगड़बड़ी का मैसेज दिखाता है.
- अगर
v23 के मुताबिक, हर
AddBatchJobOperationsRequestका साइज़ ज़्यादा से ज़्यादा 41,937,920 बाइट हो सकता है. अगर आप इस सीमा से ज़्यादा वीडियो अपलोड करते हैं, तो आपकोINTERNAL_ERRORमिलेगा. अनुरोध सबमिट करने से पहले, उसका साइज़ तय किया जा सकता है. अगर अनुरोध का साइज़ बहुत बड़ा है, तो ज़रूरी कार्रवाई की जा सकती है.Java
static final int MAX_REQUEST_BYTES = 41_937_920; ... (code to get the request object) int sizeInBytes = request.getSerializedSize();Python
from google.ads.googleads.client import GoogleAdsClient MAX_REQUEST_BYTES = 41937920 ... (code to get the request object) size_in_bytes = request._pb.ByteSize()Ruby
require 'google/ads/google_ads' MAX_REQUEST_BYTES = 41937920 ... (code to get the request object) size_in_bytes = request.to_proto.bytesizePHP
use Google\Ads\GoogleAds\V16\Resources\Campaign; const MAX_REQUEST_BYTES = 41937920; ... (code to get the request object) $size_in_bytes = $campaign->byteSize() . PHP_EOL;.NET
using Google.Protobuf; const int MAX_REQUEST_BYTES = 41937920; ... (code to get the request object) int sizeInBytes = request.ToByteArray().Length;Perl
use Devel::Size qw(total_size); use constant MAX_REQUEST_BYTES => 41937920; ... (code to get the request object) my $size_in_bytes = total_size($request);
सिंगल म्यूटेट ऑपरेशन का साइज़
पूरे अनुरोध का साइज़ ज़्यादा हो सकता है. हालांकि, बैच में मौजूद किसी एक म्यूटेट ऑपरेशन का साइज़ 1,04,84,488 बाइट (करीब 10.48 एमबी) से ज़्यादा नहीं हो सकता.