Podczas korzystania z BatchJobService pamiętaj o tych wskazówkach.
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.
Unikanie problemów z jednoczesnym dostępem
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 wielu operacji, które zmieniają ten sam obiekt w tym samym zadaniu, 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 limitem liczby żądań.
Nie pobieraj więcej niż 1000 wyników na stronę. Serwer może zwrócić mniejszą liczbę 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 użytkowania
Możesz ustawić górną granicę czasu, przez jaki zadanie wsadowe może działać, zanim zostanie anulowane. Podczas tworzenia nowego zadania wsadowego ustaw w polu
metadata.execution_limit_secondspreferowany limit czasu w sekundach. Jeśli nie ustawisz wartościmetadata.execution_limit_seconds, nie będzie 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. Możesz rozwiązać ten problem, zmniejszając liczbę operacji i ponawiając próbęAddBatchJobOperationsRequest.
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.
Każde
AddBatchJobOperationsRequestmoże mieć maksymalnie 10 484 504 bajty. Jeśli przekroczysz ten limit, otrzymaszINTERNAL_ERROR. Możesz określić rozmiar żądania przed jego przesłaniem i podjąć odpowiednie działania, jeśli jest ono zbyt duże.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.bytesizePHP
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);