En İyi Uygulamalar ve Sınırlamalar

BatchJobService özelliğini kullanırken aşağıdaki yönergeleri göz önünde bulundurun.

Verimliliği artırma

  • Çok sayıda küçük iş yerine daha az sayıda büyük iş tercih edilir.

  • Yüklenen işlemleri işlem türüne göre sıralayın. Örneğin, işinizde kampanya, reklam grubu ve reklam grubu ölçütü ekleme işlemleri varsa yüklemenizdeki işlemleri, önce tüm kampanya işlemleri, ardından tüm reklam grubu işlemleri ve son olarak tüm reklam grubu ölçütü işlemleri olacak şekilde sıralayın.

  • Aynı türdeki işlemler arasında, bunları üst kaynağa göre gruplandırmak performansı artırabilir. Örneğin, bir dizi AdGroupCriterionOperation nesneniz varsa reklam grubu ölçütlerini etkileyen işlemleri farklı reklam gruplarında karıştırmak yerine işlemleri reklam grubuna göre gruplandırmak daha verimli olabilir.

Eşzamanlılık sorunlarını önleme

  • Aynı hesap için eşzamanlı olarak birden fazla iş gönderirken büyük iş boyutlarını koruyarak işlerin aynı anda aynı nesneler üzerinde çalışmasını önlemeye çalışın. Durumu RUNNING olan birçok tamamlanmamış iş, aynı nesne grubunu değiştirmeye çalışır. Bu durum, ciddi yavaşlamalara ve hatta iş hatalarına neden olan kilitlenme benzeri koşullara yol açabilir.

  • Aynı nesneyi aynı işte değiştiren birden fazla işlem göndermeyin. Aksi takdirde sonuç tahmin edilemez olabilir.

Sonuçları en iyi şekilde alma

  • İş durumunu çok sık yoklamayın. Aksi takdirde, hız sınırı hatalarıyla karşılaşabilirsiniz.

  • Sayfa başına 1.000'den fazla sonuç almayın. Sunucu, yük veya diğer faktörler nedeniyle bundan daha az sonuç döndürebilir.

  • Sonuçların sırası, yükleme sırasıyla aynı olur.

Ek kullanım kılavuzu

  • Bir toplu işin iptal edilmeden önce çalışmasına izin verilecek süre için üst sınır belirleyebilirsiniz. Yeni bir toplu iş oluştururken metadata.execution_limit_seconds alanını tercih ettiğiniz zaman sınırına (saniye cinsinden) ayarlayın. metadata.execution_limit_seconds ayarlanmamışsa varsayılan zaman sınırı yoktur.

  • AddBatchJobOperationsRequest başına en fazla 1.000 işlem eklemeniz ve işlemlerin geri kalanını aynı işe yüklemek için sequence_token kullanmanız önerilir. İşlemlerin içeriğine bağlı olarak, tek bir AddBatchJobOperationsRequest içinde çok fazla işlem yapılması REQUEST_TOO_LARGE hatasına neden olabilir. İşlem sayısını azaltarak ve AddBatchJobOperationsRequest işlemini yeniden deneyerek bu hatayı giderebilirsiniz.

Sınırlamalar

  • Her BatchJob, bir milyona kadar işlemi destekler.

  • Her hesapta aynı anda en fazla 100 etkin veya bekleyen iş olabilir.

  • 7 günden eski bekleyen işler otomatik olarak kaldırılır.

  • Her AddBatchJobOperationsRequest maksimum 10.484.504 bayt boyutunda olabilir. Bu sınırı aşarsanız INTERNAL_ERROR alırsınız. İsteğin boyutunu göndermeden önce belirleyebilir ve çok büyükse uygun işlemi yapabilirsiniz.

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