Beachten Sie diese Richtlinien, wenn Sie
BatchJobService verwenden.
Durchsatz verbessern
Weniger größere Jobs sind besser als viele kleinere Jobs.
Bestellen Sie hochgeladene Vorgänge nach Vorgangstyp. Wenn Ihr Job Vorgänge zum Hinzufügen von Kampagnen, Anzeigengruppen und Anzeigengruppenkriterien enthält, ordnen Sie die Vorgänge in Ihrem Upload so an, dass zuerst alle Kampagnen Vorgänge, dann alle Anzeigengruppenvorgänge und schließlich alle Anzeigengruppenkriteriumsvorgänge ausgeführt werden.
Bei Vorgängen desselben Typs kann es die Leistung verbessern, sie nach übergeordneter Ressource zu gruppieren. Wenn Sie beispielsweise eine Reihe von
AdGroupCriterionOperation-Objekten haben, ist es effizienter, Vorgänge nach Anzeigengruppe zu gruppieren, anstatt Vorgänge zu mischen, die sich auf Anzeigengruppenkriterien in verschiedenen Anzeigengruppen auswirken.
Atomarität bei der Batchaufteilung
Die Google Ads API kann die Vorgänge in einem eingereichten Batchjob zur Verarbeitung in kleinere Sub-Batches aufteilen. Wenn Sie zusammengehörige Vorgänge wie
Änderungen an Eintragsgruppen in einer AssetGroup
und einer AdGroupnicht nacheinander in einem Batchjob gruppieren, teilt die
Google Ads API diese Vorgänge möglicherweise in verschiedene Sub-Batches auf. Diese Trennung kann dazu führen, dass die gesamte Änderung fehlschlägt oder das Konto in einem inkonsistenten Zustand zurückbleibt.
Logische Gruppierung
AssetGroupListingGroupFilterOperation
verwaltet Eintragsgruppen in einer AssetGroup, was
bei Performance Max-Kampagnen üblich ist.
AdGroupCriterionOperation verwaltet
Eintragsgruppen in einer AdGroup, was bei
Standard-Shopping-Kampagnen üblich ist. Beide werden verwendet, um die Produktausrichtung zu definieren. Wenn Sie Änderungen vornehmen, die sich auf die Hierarchie der Produktausrichtung in beiden Kontexten auswirken, gruppieren Sie diese Vorgänge nacheinander in Ihrem Batchjob, damit sie zusammen angewendet werden.
Datenkonsistenz
Um die Datenkonsistenz aufrechtzuerhalten und Teilaktualisierungen zu vermeiden, fügen Sie zusammengehörige Vorgänge für Eintragsgruppen nacheinander zu Ihrem Batchjob hinzu. Diese Reihenfolge trägt dazu bei, sie durch die Batchaufteilungslogik der API in atomare Sub-Batches zu gruppieren, wodurch verhindert wird, dass Ihr Konto in einem inkonsistenten Zustand zurückbleibt.
Probleme mit der Nebenläufigkeit vermeiden
Wenn Sie mehrere gleichzeitige Jobs für dasselbe Konto einreichen, versuchen Sie, die Wahrscheinlichkeit zu verringern, dass Jobs gleichzeitig an denselben Objekten arbeiten, während Sie große Jobgrößen beibehalten. Viele nicht abgeschlossene Jobs mit dem Status
RUNNING, versuchen, dieselben Objekte zu ändern. Dies kann zu Deadlock-ähnlichen Bedingungen führen, die zu einer erheblichen Verlangsamung und sogar zu Jobfehlern führen.Reichen Sie nicht mehrere Vorgänge ein, die dasselbe Objekt im selben Job ändern, da das Ergebnis unvorhersehbar sein kann.
Ergebnisse optimal abrufen
Fragen Sie den Jobstatus nicht zu häufig ab, da sonst Fehler aufgrund von Ratenlimits auftreten können.
Rufen Sie nicht mehr als 1.000 Ergebnisse pro Seite ab. Der Server kann aufgrund der Last oder anderer Faktoren weniger Ergebnisse zurückgeben.
Die Reihenfolge der Ergebnisse entspricht der Reihenfolge des Uploads.
Zusätzliche Nutzungshinweise
Sie können eine Obergrenze für die Ausführungsdauer eines Batchjobs festlegen, bevor er abgebrochen wird. Wenn Sie einen neuen Batchjob erstellen, legen Sie das
metadata.execution_limit_secondsFeld auf das gewünschte Zeitlimit in Sekunden fest. Wennmetadata.execution_limit_secondsnicht festgelegt ist, gibt es kein Standardzeitlimit.Es wird empfohlen, nicht mehr als 1.000 Vorgänge pro
AddBatchJobOperationsRequesthinzuzufügen und dassequence_tokenzu verwenden, um die restlichen Vorgänge in denselben Job hochzuladen. Je nach Inhalt der Vorgänge können zu viele Vorgänge in einer einzelnenAddBatchJobOperationsRequesteinenREQUEST_TOO_LARGE-Fehler verursachen. Sie können diesen Fehler beheben, indem Sie die Anzahl der Vorgänge reduzieren und dieAddBatchJobOperationsRequestnoch einmal versuchen.
Beschränkungen
Jeder
BatchJobunterstützt bis zu eine Million Vorgänge.Jedes Konto kann gleichzeitig bis zu 100 aktive oder ausstehende Jobs haben.
Ausstehende Jobs, die älter als 7 Tage sind, werden automatisch entfernt.
Ab Version 22 gilt für jede
AddBatchJobOperations-Anfrage ein Limit von 10.000 Änderungsanfragen pro Anfrage.Ab Version 22 gilt für das
page_sizeFeld inListBatchJobResultsRequestFolgendes:- Wenn
page_sizenicht festgelegt oder 0 ist, wird standardmäßig der Maximalwert von 1.000 verwendet. - Wenn
page_size1.000 übersteigt oder kleiner als 0 ist, gibt die API einenINVALID_PAGE_SIZEFehler zurück.
- Wenn
Ab Version 23 darf jede
AddBatchJobOperationsRequestmaximal 41.937.920 Byte groß sein. Wenn Sie diesen Wert überschreiten, erhalten Sie einenINTERNAL_ERROR. Sie können die Größe der Anfrage vor dem Senden ermitteln und entsprechende Maßnahmen ergreifen, wenn sie zu groß ist.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\V24\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);
Größe einzelner Änderungsanfragen
Die Gesamtgröße der Anfrage kann zwar größer sein, die Größe einer einzelnen Änderungsanfrage im Batch ist jedoch auf 10.484.488 Byte (ca. 10,48 MB) begrenzt.