Beachten Sie die folgenden Richtlinien, wenn Sie BatchJobService
verwenden.
Durchsatz verbessern
Weniger größere Jobs sind vorzuziehen.
Hochgeladene Vorgänge nach Vorgangstyp sortieren. Wenn Ihr Job beispielsweise 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 Kampagnenvorgänge, dann alle Anzeigengruppenvorgänge und zuletzt alle Vorgänge für Anzeigengruppenkriterien ausgeführt werden.
Bei Vorgängen desselben Typs kann die Leistung verbessert werden, wenn sie nach übergeordneter Ressource gruppiert werden. Wenn Sie beispielsweise eine Reihe von
AdGroupCriterionOperation
-Objekten haben, ist es effizienter, Vorgänge nach Anzeigengruppe zu gruppieren, anstatt Vorgänge, die sich auf Anzeigengruppenkriterien auswirken, in verschiedenen Anzeigengruppen zu mischen.
Probleme mit Parallelität vermeiden
Wenn Sie mehrere Jobs gleichzeitig für dasselbe Konto einreichen, sollten Sie die Wahrscheinlichkeit verringern, dass Jobs gleichzeitig auf dieselben Objekte angewendet werden, und gleichzeitig große Jobgrößen beibehalten. Bei vielen nicht abgeschlossenen Jobs mit dem Status
RUNNING
wird versucht, dieselbe Gruppe von Objekten zu mutieren. Dies kann zu einer Art Deadlock führen, was zu erheblichen Verzögerungen und sogar zu Jobfehlern führt.Reichen Sie nicht mehrere Vorgänge ein, die dasselbe Objekt im selben Job mutieren, da das Ergebnis unvorhersehbar sein kann.
Ergebnisse optimal abrufen
Prüfe den Jobstatus nicht zu häufig, da sonst Ratenbegrenzungsfehler auftreten können.
Rufen Sie nicht mehr als 1.000 Ergebnisse pro Seite ab. Der Server kann aufgrund von Auslastung oder anderen Faktoren weniger zurückgeben.
Die Reihenfolge der Ergebnisse entspricht der Reihenfolge des Uploads.
Zusätzliche Hinweise zur Verwendung
Sie können eine Obergrenze für die Ausführungsdauer eines Batchjobs festlegen, bevor er abgebrochen wird. Legen Sie beim Erstellen eines neuen Batchjobs im Feld
metadata.execution_limit_seconds
das gewünschte Zeitlimit in Sekunden fest. Wennmetadata.execution_limit_seconds
nicht festgelegt ist, gibt es kein Standardzeitlimit.Es wird empfohlen,pro
AddBatchJobOperationsRequest
nicht mehr als 1.000 Vorgänge hinzuzufügen und den Rest der Vorgänge mitsequence_token
in denselben Job hochzuladen. Je nach Inhalt der Vorgänge können zu viele Vorgänge in einer einzelnenAddBatchJobOperationsRequest
zu einemREQUEST_TOO_LARGE
-Fehler führen. Sie können diesen Fehler beheben, indem Sie die Anzahl der Vorgänge reduzieren und dieAddBatchJobOperationsRequest
noch einmal versuchen.
Beschränkungen
Jede
BatchJob
unterstützt bis zu eine Million Vorgänge.Für jedes Konto können gleichzeitig bis zu 100 aktive oder ausstehende Jobs vorhanden sein.
Ausstehende Jobs, die älter als 7 Tage sind, werden automatisch entfernt.
Jede
AddBatchJobOperationsRequest
darf maximal 10.484.504 Byte groß sein. Wenn Sie diese Anzahl überschreiten, erhalten Sie eineINTERNAL_ERROR
. Sie können die Größe der Anfrage vor dem Senden bestimmen und entsprechende Maßnahmen ergreifen, wenn sie zu groß ist.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);