Weź pod uwagę te wskazówki, gdy używasz
BatchJobService
Zwiększ przepustowość
Preferowana jest mniejsza liczba większych zadań zamiast wielu mniejszych.
Uporządkuj przesłane operacje według typu operacji. Jeśli na przykład Twoje stanowisko zawiera operacje dodawania kampanii, grup reklam i kryteriów grup reklam, ułóż operacje w przesłanym pliku tak, aby wszystkie kampanie operacje są pierwsze, a po nich wszystkie działań na poziomie grupy reklam, a na koniec operacji kryterium w grupie reklam.
W ramach operacji tego samego typu może to poprawić wydajność ich grupowania według zasobu nadrzędnego. Na przykład, jeśli masz serię
AdGroupCriterionOperation
obiektów – grupowanie może być skuteczniejsze. działań według grupy reklam, a nie przez mieszanie operacji mających wpływ na reklamę w różnych grupach reklam.
Unikaj problemów z równoczesnością
W przypadku przesyłania wielu zadań równoczesnych dla tego samego konta spróbuj ograniczyć liczbę oraz prawdopodobieństwo uruchomienia zadań na tych samych obiektach w tym samym czasie, i pracę na dużą skalę. Wiele nieukończonych zadań (ze stanem
RUNNING
), który próba przekształcenia tego samego zbioru obiektów może prowadzić do sytuacji przypominającej blokadę wzajemną co może prowadzić do poważnych spowolnień, a nawet do niepowodzenia.Nie przesyłaj wielu operacji, które powodują mutacje tego samego obiektu w tym samym obiekcie pracy, więc rezultaty mogą być nieprzewidywalne.
Optymalne pobieranie wyników
Nie przeprowadzaj zbyt częstego sondowania stanu zadania, ponieważ spowoduje to przekroczenie limitu liczby żądań. .
Nie pobieraj więcej niż 1000 wyników na stronę. Serwer może zwrócić jest go mniej ze względu na obciążenie lub inne czynniki.
Kolejność wyników będzie taka sama jak w przypadku przesyłania.
Dodatkowe wskazówki dotyczące użytkowania
Możesz ustawić górną granicę, jak długo może być wykonywane zadanie wsadowe, zanim jest anulowana. Podczas tworzenia nowego zadania wsadowego ustaw parametr
metadata.execution_limit_seconds
preferowany limit czasu w sekundach. Nie ma domyślnego czasu jeśli nie ustawionometadata.execution_limit_seconds
.Zaleca się dodawanie nie więcej niż 1000 operacji na
AddBatchJobOperationsRequest
i użyjsequence_token
aby przesłać pozostałe operacje do tego samego zadania. W zależności od treści operacji, zbyt wiele operacji w jednym RegułaAddBatchJobOperationsRequest
może powodować błądREQUEST_TOO_LARGE
. Ty poradzić sobie z tym błędem, zmniejszając liczbę operacji i ponawiając ponowienie próbyAddBatchJobOperationsRequest
Ograniczenia
Każda
BatchJob
obsługuje do miliona operacji.Na każdym koncie może być do 100 aktywnych lub oczekujących zadań jednocześnie.
Zadania oczekujące starsze niż 7 dni są automatycznie usuwane.
Co
AddBatchJobOperationsRequest
ma maksymalny rozmiar 10 484 504 bajtów. Po przekroczeniu tego limitu otrzymaszINTERNAL_ERROR
. Rozmiar żądania możesz określić przed prześlij ją i w razie potrzeby podejmij odpowiednie działania.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);