Best practice e limitazioni

Attieniti a queste linee guida quando utilizzi BatchJobService.

Migliora la velocità effettiva

  • È preferibile privilegiare meno lavori di grandi dimensioni rispetto a molti lavori più piccoli.

  • Operazioni caricate sull'ordine 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 per prime, seguite da tutte le operazioni del gruppo di annunci e infine da tutte le operazioni relative ai 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 contemporaneità

  • Quando invii più job simultanei per lo stesso account, prova a ridurre la probabilità che i job vengano utilizzati contemporaneamente sugli stessi oggetti, pur mantenendo grandi dimensioni. Molti job non completati (con stato RUNNING) che provano a modificare lo stesso insieme di oggetti possono portare a condizioni simili a deadlock, determinando gravi rallentamenti e persino errori dei job.

  • Non inviare più operazioni che modificano lo stesso oggetto nello stesso job, poiché il risultato può essere imprevedibile.

Recupera i risultati in modo ottimale

  • Non eseguire il polling dello stato del job troppo spesso, altrimenti rischi di raggiungere errori di limite di frequenza.

  • Non recuperare più di 1000 risultati per pagina. Il server potrebbe restituire meno di questo a causa del carico o di altri fattori.

  • L'ordine dei risultati sarà lo stesso dell'ordine di caricamento.

Ulteriori indicazioni sull'utilizzo

  • Puoi impostare un limite superiore per il periodo di tempo in cui un job batch può essere eseguito prima di essere annullato. Quando crei un nuovo job batch, imposta il campo metadata.execution_limit_seconds sul limite di tempo che preferisci, in secondi. Non esiste un limite di tempo predefinito se non è impostato metadata.execution_limit_seconds.

  • Ti consigliamo di non aggiungere più di 1000 operazioni per AddBatchJobOperationsRequest e di utilizzare sequence_token per caricare il resto delle operazioni nello stesso job. A seconda dei contenuti delle operazioni, troppe operazioni in un singolo AddBatchJobOperationsRequest potrebbero causare un errore REQUEST_TOO_LARGE. Puoi gestire questo errore riducendo il numero di operazioni e riprovando a AddBatchJobOperationsRequest.

Limitazioni

  • Ogni BatchJob supporta fino a un milione di operazioni.

  • Ogni account può avere fino a 100 job attivi o in attesa contemporaneamente.

  • I job in attesa che risalgono a più di 7 giorni vengono rimossi automaticamente.