Considere estas diretrizes ao usar
BatchJobService
Melhorar a capacidade de processamento
É preferível ter menos vagas maiores do que muitas tarefas menores.
Ordenar operações enviadas por tipo de operação. Por exemplo, se seu trabalho contém operações para adicionar campanhas, grupos de anúncios e critérios de grupos de anúncios, ordenar as operações em seu upload para que toda a campanha operações são as primeiras, seguidas por todas as operações do grupo de anúncios e, por fim, operações de critério do grupo de anúncios.
Dentro de operações do mesmo tipo, agrupá-las pode melhorar o desempenho por recurso pai. Por exemplo, se você tiver uma série de
AdGroupCriterionOperation
, pode ser mais eficiente agrupar operações por grupo de anúncios, em vez de misturar operações que afetam a critérios de grupo em grupos de anúncios diferentes.
Evitar problemas de simultaneidade
Ao enviar vários jobs simultâneos para a mesma conta, tente reduzir a probabilidade de os jobs operarem nos mesmos objetos ao mesmo tempo, enquanto e manter tamanhos de trabalho grandes. Muitos trabalhos não concluídos (com status de
RUNNING
) que tentar mutar o mesmo conjunto de objetos pode levar a condições de impasse resultando em grande lentidão e até mesmo falhas em jobs.Não envie várias operações que mudam o mesmo objeto da mesma job, já que o resultado pode ser imprevisível.
Recuperar os resultados de maneira otimizada
Não pesquise o status do job com muita frequência para não correr o risco de atingir o limite de taxa erros.
Não recupere mais de mil resultados por página. O servidor pode retornar devido à carga ou a outros fatores.
A ordem dos resultados será a mesma que a ordem de upload.
Outras orientações de uso
É possível definir um limite superior para o período em que um job em lote pode ser executado antes de que está sendo cancelado. Ao criar uma nova tarefa em lote, defina o
metadata.execution_limit_seconds
para o limite de tempo que preferir, em segundos. Não há tempo padrão limite semetadata.execution_limit_seconds
não estiver definido.Não é recomendável adicionar mais de 1.000 operações por
AddBatchJobOperationsRequest
e use o métodosequence_token
para fazer o upload do restante das operações para a mesma tarefa. Dependendo conteúdo das operações, muitas operações em umaAddBatchJobOperationsRequest
pode causar um erroREQUEST_TOO_LARGE
. Você pode lidar com esse erro reduzindo o número de operações e tentandoAddBatchJobOperationsRequest
:
Limitações
Cada
BatchJob
aceita até um milhão as operações.Cada conta pode ter até 100 tarefas ativas ou pendentes ao mesmo tempo.
As tarefas pendentes com mais de sete dias serão removidas automaticamente.
Cada
AddBatchJobOperationsRequest
tem um tamanho máximo de 10.484.504 bytes. Se você exceder esse limite, receberá umINTERNAL_ERROR
. É possível determinar o tamanho da solicitação antes enviar e tomar as medidas apropriadas se forem muito grandes.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);