Các phương pháp hay nhất và hạn chế

Hãy xem xét các nguyên tắc sau khi sử dụng BatchJobService.

Cải thiện thông lượng

  • Ít công việc lớn hơn sẽ được ưu tiên hơn so với nhiều công việc nhỏ hơn.

  • Các hoạt động đã tải lên của đơn đặt hàng theo loại hoạt động. Ví dụ: nếu công việc của bạn chứa các thao tác để thêm chiến dịch, nhóm quảng cáo và tiêu chí nhóm quảng cáo, sắp xếp các hoạt động trong tệp tải lên của bạn để tất cả chiến dịch hoạt động đầu tiên, sau đó là tất cả các hoạt động của nhóm quảng cáo và cuối cùng là tất cả hoạt động tiêu chí nhóm quảng cáo.

  • Trong các hoạt động cùng loại, tính năng này có thể cải thiện hiệu suất để nhóm các hoạt động đó theo tài nguyên mẹ. Ví dụ: nếu bạn có một loạt AdGroupCriterionOperation đối tượng, việc nhóm các đối tượng có thể hiệu quả hơn theo nhóm quảng cáo, thay vì phối hợp các hoạt động ảnh hưởng đến quảng cáo tiêu chí nhóm trong các nhóm quảng cáo khác nhau.

Tránh các vấn đề đồng thời

  • Khi gửi nhiều công việc đồng thời cho cùng một tài khoản, hãy cố gắng giảm khả năng công việc hoạt động trên cùng đối tượng tại cùng một thời điểm, trong khi duy trì quy mô lớn công việc. Nhiều công việc chưa hoàn thành (với trạng thái RUNNING) mà việc cố gắng thay đổi cùng một nhóm đối tượng có thể dẫn đến các tình trạng giống như tắc nghẽn từ đó làm chậm tốc độ nghiêm trọng và thậm chí là thất bại trong công việc.

  • Đừng gửi nhiều thao tác làm thay đổi cùng một đối tượng trong cùng một đối tượng vì kết quả này có thể khó dự đoán.

Truy xuất kết quả một cách tối ưu

  • Đừng thăm dò trạng thái công việc quá thường xuyên, nếu không bạn có nguy cơ đạt đến giới hạn số lượng yêu cầu .

  • Không truy xuất quá 1.000 kết quả trên mỗi trang. Máy chủ có thể trả về ít hơn thế do tải hoặc các yếu tố khác.

  • Thứ tự kết quả sẽ giống với thứ tự tải lên.

Hướng dẫn sử dụng bổ sung

  • Bạn có thể đặt giới hạn trên là khoảng thời gian mà một công việc hàng loạt được phép chạy trước đó đang bị huỷ. Khi tạo một công việc hàng loạt mới, hãy đặt metadata.execution_limit_seconds với giới hạn thời gian bạn muốn (tính bằng giây). Không có thời gian mặc định nếu bạn không đặt metadata.execution_limit_seconds.

  • Bạn không nên thêm quá 1.000 thao tác trên mỗi AddBatchJobOperationsRequest và sử dụng sequence_token để tải các thao tác còn lại lên cùng một công việc. Tuỳ thuộc vào nội dung của thao tác, quá nhiều thao tác trong một thao tác AddBatchJobOperationsRequest có thể gây ra lỗi REQUEST_TOO_LARGE. Bạn có thể xử lý lỗi này bằng cách giảm số lượng thao tác và thử lại AddBatchJobOperationsRequest.

Các điểm hạn chế

  • Mỗi BatchJob sẽ hỗ trợ tối đa một triệu các toán tử.

  • Mỗi tài khoản có thể có tối đa 100 công việc đang hoạt động hoặc đang chờ xử lý cùng lúc.

  • Những công việc đang chờ xử lý đã tồn tại quá 7 ngày sẽ tự động bị xoá.

  • Mỗi AddBatchJobOperationsRequest có kích thước tối đa là 10.484.504 byte. Nếu vượt quá hạn mức này, bạn sẽ nhận được INTERNAL_ERROR. Bạn có thể xác định quy mô của yêu cầu trước gửi và có hành động thích hợp nếu kích thước quá lớn.

    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);