Tieni presente queste linee guida quando utilizzi
BatchJobService.
Migliorare la velocità effettiva
È preferibile un numero ridotto di job di grandi dimensioni rispetto a molti job di piccole dimensioni.
Ordina le operazioni caricate per tipo di operazione. Ad esempio, se il job contiene operazioni per aggiungere campagne, gruppi di annunci e criteri dei gruppi di annunci, ordina le operazioni nel caricamento in modo che tutte le operazioni della campagna siano eseguite per prime, seguite da tutte le operazioni del gruppo di annunci e infine da tutte le operazioni dei criteri dei gruppi di annunci.
All'interno delle operazioni dello stesso tipo, può migliorare il rendimento raggrupparle per risorsa principale. Ad esempio, se hai una serie di oggetti
AdGroupCriterionOperation, può essere più efficiente raggruppare le operazioni per gruppo di annunci, anziché mescolare le operazioni che influiscono sui criteri dei gruppi di annunci in gruppi di annunci diversi.
Atomicità nella suddivisione batch
L'API Google Ads potrebbe suddividere le operazioni in un job batch inviato in batch secondari più piccoli per l'elaborazione. Se non raggruppi le operazioni correlate, ad esempio le modifiche dei gruppi di schede all'interno di un AssetGroup e di un AdGroup, in sequenza all'interno di un job batch, l'API Google Ads potrebbe suddividere queste operazioni in batch secondari diversi. Questa separazione può comportare il mancato completamento dell'intera modifica o lasciare l'account in uno stato incoerente.
Raggruppamento logico
AssetGroupListingGroupFilterOperation
gestisce i gruppi di schede all'interno di un AssetGroup, il che
è comune nelle campagne Performance Max.
AdGroupCriterionOperation gestisce
i gruppi di schede all'interno di un AdGroup, il che è comune nelle
campagne Shopping standard. Entrambi vengono utilizzati per definire il targeting dei prodotti. Se apporti modifiche che influiscono sulla gerarchia di targeting dei prodotti in entrambi i contesti, raggruppa queste operazioni in sequenza nel job batch per assicurarti che vengano applicate insieme.
Coerenza dei dati
Per mantenere la coerenza dei dati ed evitare aggiornamenti parziali, aggiungi le operazioni dei gruppi di schede correlate in sequenza al job batch. Questo ordine consente di raggrupparli in batch secondari atomici in base alla logica di suddivisione batch dell'API, il che impedisce che l'account venga lasciato in uno stato incoerente.
Evitare problemi di concorrenza
Quando invii più job simultanei per lo stesso account, cerca di ridurre la probabilità che i job operino sugli stessi oggetti contemporaneamente, mantenendo al contempo le dimensioni dei job di grandi dimensioni. Molti job non completati, con lo stato di
RUNNING, tentano di modificare lo stesso insieme di oggetti, il che può portare a condizioni di deadlock che causano un rallentamento significativo e persino errori dei job.Non inviare più operazioni che modificano lo stesso oggetto nello stesso job, in quanto il risultato può essere imprevedibile.
Recuperare i risultati in modo ottimale
Non eseguire il polling dello stato del job troppo spesso, altrimenti rischi di riscontrare errori di limite di frequenza.
Non recuperare più di 1000 risultati per pagina. Il server potrebbe restituirne un numero inferiore a causa del carico o di altri fattori.
L'ordine dei risultati sarà lo stesso dell'ordine di caricamento.
Indicazioni aggiuntive sull'utilizzo
Puoi impostare un limite massimo per la durata di esecuzione di un job batch prima che venga annullato. Quando crei un nuovo job batch, imposta il
metadata.execution_limit_secondscampo sul limite di tempo che preferisci, in secondi. Semetadata.execution_limit_secondsnon è impostato, non è previsto un limite di tempo predefinito.Ti consigliamo di aggiungere non più di 1000 operazioni per
AddBatchJobOperationsRequeste di utilizzaresequence_tokenper caricare il resto delle operazioni nello stesso job. A seconda del contenuto delle operazioni, un numero eccessivo di operazioni in un singoloAddBatchJobOperationsRequestpotrebbe causare un erroreREQUEST_TOO_LARGE. Puoi gestire questo errore riducendo il numero di operazioni e riprovandoAddBatchJobOperationsRequest.
Limitazioni
Ogni
BatchJobsupporta fino a un milione operazioni.Ogni account può avere fino a 100 job attivi o in attesa contemporaneamente.
I job in attesa più vecchi di 7 giorni vengono rimossi automaticamente.
A partire dalla versione 22, ogni richiesta
AddBatchJobOperationsha un limite di 10.000 operazioni di modifica per richiesta.A partire dalla versione 22, per il
page_sizecampo inListBatchJobResultsRequest:- Se
page_sizenon è impostato o è 0, il valore predefinito è il massimo di 1000. - Se
page_sizesupera 1000 o è inferiore a 0, l'API restituisce unINVALID_PAGE_SIZEerrore.
- Se
A partire dalla versione 23, ogni
AddBatchJobOperationsRequestha una dimensione massima di 41.937.920 byte. Se superi questo limite, riceverai unINTERNAL_ERROR. Puoi determinare la dimensione della richiesta prima dell'invio e intraprendere le azioni appropriate se è troppo grande.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);
Dimensione di una singola operazione di modifica
Sebbene la richiesta complessiva possa essere più grande, la dimensione di una singola operazione di modifica all'interno del batch è limitata a 10.484.488 byte (circa 10,48 MB).