Best Practices und Einschränkungen

Beachten Sie bei der Verwendung von BatchJobService

Durchsatz verbessern

  • Weniger größere Aufträge werden gegenüber vielen kleineren Aufträgen bevorzugt.

  • Sortieren Sie hochgeladene Vorgänge nach Vorgangstyp. Wenn Ihr Job zum Beispiel enthält Vorgänge zum Hinzufügen von Kampagnen, Anzeigengruppen und Anzeigengruppenkriterien. ordnen Sie die Vorgänge im Upload so an, dass alle Kampagnen Vorgänge stehen an erster Stelle, gefolgt von allen die Anzeigengruppenvorgänge und schließlich alle Operationen für Kriteriums-Anzeigengruppen.

  • Innerhalb von Vorgängen desselben Typs kann die Leistung verbessert werden, indem sie gruppiert werden. nach übergeordneter Ressource. Wenn Sie z. B. eine Reihe von AdGroupCriterionOperation-Objekten hat, kann das Gruppieren effizienter sein Operationen nach Anzeigengruppe gruppieren, statt Operationen zu vermischen, die Anzeigen betreffen Anzeigengruppenkriterien erstellen.

Gleichzeitigkeitsprobleme vermeiden

  • Wenn Sie mehrere zeitgleiche Aufträge für dasselbe Konto senden, versuchen Sie, die Wahrscheinlichkeit, dass Jobs gleichzeitig für dieselben Objekte ausgeführt werden, während große Aufträge pflegen. Viele nicht abgeschlossene Aufträge (mit dem Status RUNNING), die versuchen, denselben Satz von Objekten zu bearbeiten, kann zu blockadeähnlichen Bedingungen führen. was zu einer erheblichen Verlangsamung und sogar zu Jobfehlern führt.

  • Senden Sie nicht mehrere Vorgänge, die dasselbe Objekt im selben da das Ergebnis unvorhersehbar sein kann.

Ergebnisse optimal abrufen

  • Fragen Sie den Jobstatus nicht zu häufig ab, da Sie sonst das Ratenlimit erreichen könnten. Fehler.

  • Es dürfen nicht mehr als 1.000 Ergebnisse pro Seite abgerufen werden. Der Server könnte aufgrund der Auslastung oder anderer Faktoren weniger aus.

  • Die Reihenfolge der Ergebnisse entspricht der Uploadreihenfolge.

Zusätzliche Hinweise zur Verwendung

  • Sie können eine Obergrenze für die Ausführungsdauer eines Batchjobs festlegen, bevor abgesagt wird. Legen Sie beim Erstellen eines neuen Batch-Auftrags metadata.execution_limit_seconds im Feld das gewünschte Zeitlimit in Sekunden ein. Es gibt keine Standardzeit Limit, wenn metadata.execution_limit_seconds nicht festgelegt ist.

  • Es wird empfohlen,nicht mehr als 1.000 Vorgänge pro AddBatchJobOperationsRequest und verwenden Sie die sequence_token um die übrigen Vorgänge in denselben Auftrag hochzuladen. Je nach Inhalt der Vorgänge, zu viele Vorgänge in einem AddBatchJobOperationsRequest könnte einen REQUEST_TOO_LARGE-Fehler verursachen. Ich kann diesen Fehler beheben, indem er die Anzahl der Vorgänge reduziert und den AddBatchJobOperationsRequest

Beschränkungen

  • Pro BatchJob werden bis zu eine Million unterstützt. Geschäftsabläufe.

  • Jedes Konto kann bis zu 100 aktive oder ausstehende Jobs gleichzeitig enthalten.

  • Ausstehende Aufträge, die älter als sieben Tage sind, werden automatisch entfernt.

  • Jedes AddBatchJobOperationsRequest maximal 10.484.504 Byte. Wenn Sie diesen Wert überschreiten, erhalten Sie ein INTERNAL_ERROR. Sie können die Größe der Anfrage vor dem und gegebenenfalls entsprechende Maßnahmen ergreifen.

    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);