BatchJobService
을 사용할 때는 다음 가이드라인을 고려하세요.
처리량 개선
작업이 많은 것보다 큰 작업이 적은 것이 좋습니다.
업로드된 작업을 작업 유형별로 정렬합니다. 예를 들어 작업에 캠페인, 광고 그룹, 광고 그룹 기준을 추가하는 작업이 포함된 경우 업로드에서 모든 캠페인 작업이 먼저 오고, 그 뒤에 모든 광고 그룹 작업이 오고, 마지막으로 모든 광고 그룹 기준 작업이 오도록 작업을 정렬합니다.
동일한 유형의 작업 내에서 상위 리소스별로 그룹화하면 성능이 향상될 수 있습니다. 예를 들어
AdGroupCriterionOperation
객체가 여러 개 있는 경우 서로 다른 광고 그룹의 광고 그룹 기준에 영향을 미치는 작업을 혼합하는 대신 광고 그룹별로 작업을 그룹화하는 것이 더 효율적일 수 있습니다.
동시 실행 문제 방지
동일한 계정에 대해 여러 동시 작업을 제출할 때는 큰 작업 크기를 유지하면서 동일한 객체에서 동시에 작동하는 작업의 가능성을 줄이세요. 상태가
RUNNING
인 미완료 작업이 많으면 동일한 객체 집합을 변경하려고 시도하므로 심각한 속도 저하와 작업 실패를 초래하는 교착 상태와 유사한 조건이 발생할 수 있습니다.결과를 예측할 수 없으므로 동일한 작업에서 동일한 객체를 변경하는 여러 작업을 제출하지 마세요.
최적으로 결과 검색
작업 상태를 너무 자주 폴링하면 속도 제한 오류가 발생할 수 있습니다.
페이지당 1,000개 이상의 결과를 가져오지 마세요. 로드 또는 기타 요인으로 인해 서버에서 이보다 적은 수를 반환할 수 있습니다.
결과 순서는 업로드 순서와 동일합니다.
추가 사용 안내
일괄 작업이 취소되기 전에 실행될 수 있는 상한을 설정할 수 있습니다. 새 일괄 작업을 만들 때
metadata.execution_limit_seconds
필드를 원하는 시간 제한(초)으로 설정합니다.metadata.execution_limit_seconds
가 설정되지 않은 경우 기본 시간 제한은 없습니다.AddBatchJobOperationsRequest
당 1,000개 이하의 작업을 추가하고sequence_token
을 사용하여 나머지 작업을 동일한 작업에 업로드하는 것이 좋습니다. 작업의 내용에 따라 단일AddBatchJobOperationsRequest
에 작업이 너무 많으면REQUEST_TOO_LARGE
오류가 발생할 수 있습니다. 작업 수를 줄이고AddBatchJobOperationsRequest
를 다시 시도하여 이 오류를 처리할 수 있습니다.
제한사항
각
BatchJob
은 최대 100만 개의 작업을 지원합니다.각 계정에는 동시에 최대 100개의 활성 또는 대기 중인 작업이 있을 수 있습니다.
7일 이상 경과한 대기 중인 작업은 자동으로 삭제됩니다.
각
AddBatchJobOperationsRequest
의 최대 크기는 10,484,504바이트입니다. 이 한도를 초과하면INTERNAL_ERROR
이 발생합니다. 제출 전에 요청의 크기를 확인하고 너무 큰 경우 적절한 조치를 취할 수 있습니다.자바
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);