Tieni presenti queste linee guida quando utilizzi
BatchJobService
Migliora la velocità effettiva
È preferibile un numero minore di lavori di grandi dimensioni rispetto a molti lavori più piccoli.
Ordina le operazioni caricate per tipo di operazione. Ad esempio, se il tuo lavoro contiene operazioni per aggiungere criteri per campagne, gruppi di annunci e gruppi di annunci, ordinare le operazioni nel caricamento in modo che tutte le campagne operazioni, seguite da tutte le operazioni dei gruppi di annunci e infine tutto operazioni per i criteri del gruppo di annunci.
All'interno di operazioni dello stesso tipo, è possibile migliorare le prestazioni per raggrupparle dalla risorsa padre. Ad esempio, se disponi di una serie
AdGroupCriterionOperation
oggetti, può essere più efficiente raggruppare operazioni per gruppo di annunci, invece di combinare operazioni che influiscono sull'annuncio in gruppi di annunci diversi.
Evita i problemi di contemporaneità
Quando invii più job simultanei per lo stesso account, prova a ridurre la probabilità che i job operino sugli stessi oggetti contemporaneamente, mentre e mantenere job di grandi dimensioni. Molti lavori non completati (con stato
RUNNING
) che provare a mutare lo stesso insieme di oggetti può portare a condizioni simili a un deadlock causando gravi rallentamenti e persino errori dei job.Non inviare più operazioni che modificano lo stesso oggetto nello stesso oggetto un job, il risultato può essere imprevedibile.
Recupera i risultati in modo ottimale
Non eseguire sondaggi troppo frequenti sullo stato del job, altrimenti rischi di raggiungere il limite di frequenza errori.
Non recuperare più di 1000 risultati per pagina. Il server potrebbe restituire inferiore a causa del carico o di altri fattori.
L'ordine dei risultati sarà uguale all'ordine di caricamento.
Ulteriori indicazioni sull'utilizzo
Puoi impostare un limite superiore per il tempo di esecuzione di un job batch prima del giorno in fase di annullamento. Quando crei un nuovo job batch, imposta il parametro
metadata.execution_limit_seconds
al limite di tempo che preferisci, in secondi. Non esiste un orario predefinito semetadata.execution_limit_seconds
non è impostato.Ti consigliamo di non aggiungere più di 1000 operazioni per
AddBatchJobOperationsRequest
e utilizzasequence_token
per caricare le altre operazioni nello stesso job. In base delle operazioni, troppe operazioni in unaAddBatchJobOperationsRequest
potrebbe causare un erroreREQUEST_TOO_LARGE
. Tu può gestire questo errore riducendo il numero di operazioni e riprovandoAddBatchJobOperationsRequest
.
Limitazioni
Ogni
BatchJob
supporta fino a un milione 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.
Ogni
AddBatchJobOperationsRequest
ha una dimensione massima di 10.484.504 byte. Se superi questo limite, riceveraiINTERNAL_ERROR
. Puoi determinare le dimensioni della richiesta prima 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);