Tieni in considerazione queste linee guida quando utilizzi BatchJobService.
Migliorare il throughput
- È preferibile un numero ridotto di job più grandi rispetto a molti job più piccoli. 
- Ordina le operazioni caricate per tipo di operazione. Ad esempio, se il tuo 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 vengano eseguite per prime, seguite da tutte le operazioni del gruppo di annunci e infine da tutte le operazioni dei criteri del gruppo di annunci. 
- All'interno di operazioni dello stesso tipo, può migliorare le prestazioni raggruppandole per risorsa padre. Ad esempio, se hai una serie di oggetti - AdGroupCriterionOperation, può essere più efficiente raggruppare le operazioni per gruppo di annunci, anziché combinare operazioni che influiscono sui criteri dei gruppi di annunci in gruppi di annunci diversi.
Evitare problemi di concorrenza
- Quando invii più job simultanei per lo stesso account, prova a ridurre la probabilità che i job operino sugli stessi oggetti contemporaneamente, mantenendo dimensioni dei job elevate. Molti job non completati, con lo stato - RUNNING, tentano di modificare lo stesso insieme di oggetti, il che può portare a condizioni di blocco simili che causano un forte rallentamento 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 raggiungere il limite di frequenza e ricevere errori. 
- 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 per l'utilizzo
- Puoi impostare un limite superiore per la durata di esecuzione di un job batch prima che venga annullato. Quando crei un nuovo job batch, imposta il campo - metadata.execution_limit_secondssul limite di tempo che preferisci, in secondi. Se- metadata.execution_limit_secondsnon è impostato, non è previsto un limite di tempo predefinito.
- Ti consigliamo di aggiungere non più di 1000 operazioni per - AddBatchJobOperationsRequeste di utilizzare- sequence_tokenper caricare il resto delle operazioni nello stesso job. A seconda del contenuto delle operazioni, troppe operazioni in un singolo- AddBatchJobOperationsRequestpotrebbero causare un errore- REQUEST_TOO_LARGE. Puoi gestire questo errore riducendo il numero di operazioni e riprovando a eseguire- AddBatchJobOperationsRequest.
Limitazioni
- Ogni - BatchJobsupporta fino a un milione di operazioni.
- Ogni account può avere fino a 100 job attivi o in attesa contemporaneamente. 
- I lavori in attesa risalenti a più di 7 giorni prima della data corrente vengono rimossi automaticamente. 
- A partire dalla versione 22, ogni richiesta - AddBatchJobOperationsha un limite di 10.000 operazioni di mutazione per richiesta.
- A partire dalla versione 22, per il campo - page_sizein- ListBatchJobResultsRequest:- Se page_sizenon è impostato o è 0, il valore predefinito è il massimo di 1000.
- Se page_sizesupera 1000 o è inferiore a 0, l'API restituisce un erroreINVALID_PAGE_SIZE.
 
- Se 
- Ogni - AddBatchJobOperationsRequestha una dimensione massima di 10.484.504 byte. Se superi questo limite, riceverai un- INTERNAL_ERROR. Puoi determinare le dimensioni della richiesta prima dell'invio e intraprendere le azioni appropriate se sono troppo grandi.- 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);