Podczas korzystania z
BatchJobService należy wziąć pod uwagę te wskazówki.
Zwiększanie przepustowości
Preferowana jest mniejsza liczba większych zadań niż wiele mniejszych.
Uporządkuj przesłane operacje według ich typu. Jeśli np. zadanie zawiera operacje dodawania kampanii, grup reklam i ich kryteriów, uporządkuj operacje w przesłanym pliku tak, aby najpierw były wszystkie operacje dotyczące kampanii, potem wszystkie operacje dotyczące grup reklam, a na końcu wszystkie operacje dotyczące kryteriów grup reklam.
W przypadku operacji tego samego typu wydajność można zwiększyć, grupując je według zasobu nadrzędnego. Jeśli na przykład masz serię obiektów
AdGroupCriterionOperation, bardziej efektywne może być grupowanie operacji według grupy reklam niż mieszanie operacji, które wpływają na kryteria w różnych grupach reklam.
Atomowość w dzieleniu zbiorczym
Interfejs Google Ads API może podzielić operacje w przesłanym zadaniu wsadowym na mniejsze podzbiory do przetworzenia. Jeśli nie pogrupujesz powiązanych operacji, takich jak modyfikacje grup informacji o produktach w ramach AssetGroup i AdGroup, kolejno w zadaniu wsadowym, interfejs Google Ads API może podzielić te operacje na różne podzbiory. Ten podział może spowodować niepowodzenie całej modyfikacji lub pozostawienie konta w stanie niespójnym.
Grupowanie logiczne
AssetGroupListingGroupFilterOperation
zarządza grupami informacji o produktach w ramach AssetGroup, co
jest powszechne w kampaniach Performance Max.
AdGroupCriterionOperation zarządza
grupami informacji o produktach w ramach AdGroup, co jest powszechne w
standardowych kampaniach produktowych. Obie te operacje służą do określania kierowania na produkty. Jeśli wprowadzasz zmiany, które wpływają na hierarchię kierowania na produkty w obu kontekstach, pogrupuj te operacje kolejno w zadaniu wsadowym, aby mieć pewność, że zostaną zastosowane razem.
Spójność danych
Aby zachować spójność danych i zapobiec częściowym aktualizacjom, dodaj powiązane operacje na grupach informacji o produktach kolejno do zadania wsadowego. Ta kolejność pomaga grupować je w atomowe podzbiory za pomocą logiki dzielenia zbiorczego interfejsu API, co zapobiega pozostawieniu konta w stanie niespójnym.
Unikanie problemów z współbieżnością
Podczas przesyłania wielu równoczesnych zadań na to samo konto staraj się zmniejszyć prawdopodobieństwo, że zadania będą działać na tych samych obiektach w tym samym czasie, jeśli utrzymujesz duże rozmiary zadań. Wiele niedokończonych zadań, które mają stan
RUNNING, próbuje zmieniać ten sam zestaw obiektów, co może prowadzić do sytuacji podobnych do zakleszczenia, powodujących znaczne spowolnienie, a nawet niepowodzenie zadań.Nie przesyłaj w tym samym zadaniu wielu operacji, które zmieniają ten sam obiekt, ponieważ wynik może być nieprzewidywalny.
Optymalne pobieranie wyników
Nie sprawdzaj stanu zadania zbyt często, ponieważ może to spowodować błędy związane z przekroczeniem limitu.
Nie pobieraj więcej niż 1000 wyników na stronie. Serwer może zwrócić mniej wyników z powodu obciążenia lub innych czynników.
Kolejność wyników będzie taka sama jak kolejność przesyłania.
Dodatkowe wskazówki dotyczące korzystania
Możesz ustawić górny limit czasu, przez jaki zadanie zbiorcze może być wykonywane, zanim zostanie anulowane. Podczas tworzenia nowego zadania wsadowego ustaw w sekundach preferowany limit czasu w polu
metadata.execution_limit_seconds. Jeśli polemetadata.execution_limit_secondsnie jest ustawione, nie ma domyślnego limitu czasu.Zalecamy dodawanie nie więcej niż 1000 operacji na
AddBatchJobOperationsRequesti używaniesequence_tokendo przesyłania pozostałych operacji do tego samego zadania. W zależności od zawartości operacji zbyt duża liczba operacji w jednymAddBatchJobOperationsRequestmoże spowodować błądREQUEST_TOO_LARGE. Aby rozwiązać ten problem, zmniejsz liczbę operacji i ponów próbę wykonaniaAddBatchJobOperationsRequest.
Ograniczenia
Każde
BatchJobobsługuje do miliona operacji.Każde konto może mieć jednocześnie maksymalnie 100 aktywnych lub oczekujących zadań.
Zadania oczekujące od ponad 7 dni są automatycznie usuwane.
Od wersji 22 każde żądanie
AddBatchJobOperationsma limit 10 tys. operacji zmiany na żądanie.Od wersji 22 w przypadku pola
page_sizewListBatchJobResultsRequest:- Jeśli
page_sizenie jest ustawione lub ma wartość 0, domyślnie przyjmuje maksymalną wartość 1000. - Jeśli
page_sizeprzekracza 1000 lub jest mniejsze niż 0, interfejs API zwraca błądINVALID_PAGE_SIZE.
- Jeśli
Od wersji 23 każde
AddBatchJobOperationsRequestma maksymalny rozmiar 41 937 920 bajtów. Jeśli przekroczysz ten limit, otrzymasz anINTERNAL_ERROR. Przed przesłaniem możesz określić rozmiar żądania i podjąć odpowiednie działania, jeśli jest ono zbyt duże.Java
static final int MAX_REQUEST_BYTES = 41_937_920; ... (code to get the request object) int sizeInBytes = request.getSerializedSize();Python
from google.ads.googleads.client import GoogleAdsClient MAX_REQUEST_BYTES = 41937920 ... (code to get the request object) size_in_bytes = request._pb.ByteSize()Ruby
require 'google/ads/google_ads' MAX_REQUEST_BYTES = 41937920 ... (code to get the request object) size_in_bytes = request.to_proto.bytesizePHP
use Google\Ads\GoogleAds\V24\Resources\Campaign; const MAX_REQUEST_BYTES = 41937920; ... (code to get the request object) $size_in_bytes = $campaign->byteSize() . PHP_EOL;.NET
using Google.Protobuf; const int MAX_REQUEST_BYTES = 41937920; ... (code to get the request object) int sizeInBytes = request.ToByteArray().Length;Perl
use Devel::Size qw(total_size); use constant MAX_REQUEST_BYTES => 41937920; ... (code to get the request object) my $size_in_bytes = total_size($request);
Rozmiar pojedynczej operacji zmiany
Chociaż ogólny rozmiar żądania może być większy, rozmiar pojedynczej operacji zmiany w ramach zbioru jest ograniczony do 10 484 488 bajtów (ok.10,48 MB).