Beachten Sie die folgenden Richtlinien, wenn Sie BatchJobService
verwenden.
Durchsatz verbessern
Weniger größere Jobs sind besser als viele kleinere Jobs.
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 alle Kampagnenvorgänge zuerst, gefolgt von allen Anzeigengruppenvorgängen und schließlich allen Anzeigengruppenkriteriumvorgängen stehen.
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, kann es effizienter sein, Vorgänge nach Anzeigengruppe zu gruppieren, anstatt Vorgänge zu mischen, die sich auf Anzeigengruppenkriterien in verschiedenen Anzeigengruppen auswirken.
Probleme mit der Parallelität vermeiden
Wenn Sie mehrere gleichzeitige Jobs für dasselbe Konto einreichen, sollten Sie die Wahrscheinlichkeit verringern, dass Jobs gleichzeitig auf dieselben Objekte zugreifen, und gleichzeitig große Jobgrößen beibehalten. Viele unfertige Jobs mit dem Status
RUNNING
versuchen, dieselben Objekte zu ändern. Dies kann zu Deadlock-ähnlichen Bedingungen führen, die zu erheblichen Verlangsamungen 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 Ratenbegrenzungen erreicht werden 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 der 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 das Feld
metadata.execution_limit_seconds
auf das gewünschte Zeitlimit in Sekunden fest. Wennmetadata.execution_limit_seconds
nicht festgelegt ist, gibt es kein Standardzeitlimit.Es wird empfohlen, nicht mehr als 1.000 Vorgänge pro
AddBatchJobOperationsRequest
hinzuzufügen und diesequence_token
zu verwenden, um die restlichen Vorgänge in denselben Job hochzuladen. Je nach Inhalt der Vorgänge kann es bei zu vielen Vorgängen in einem einzelnenAddBatchJobOperationsRequest
zu einemREQUEST_TOO_LARGE
-Fehler kommen. Sie können diesen Fehler beheben, indem Sie die Anzahl der Vorgänge reduzieren und denAddBatchJobOperationsRequest
noch einmal versuchen.
Beschränkungen
Jede
BatchJob
unterstützt bis zu einer Million Vorgänge.Jedes Konto kann bis zu 100 aktive oder ausstehende Jobs gleichzeitig haben.
Ausstehende Jobs, die älter als 7 Tage sind, werden automatisch entfernt.
Jede
AddBatchJobOperationsRequest
darf maximal 10.484.504 Byte groß sein. Wenn Sie dieses Limit überschreiten, erhalten Sie eineINTERNAL_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 = 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);