En İyi Uygulamalar ve Sınırlamalar

BatchJobService simgesini kullanırken bu yönergeleri göz önünde bulundurun.

Veri akışını iyileştirme

  • Çok sayıda küçük işe kıyasla 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şiniz kampanya, reklam grubu ve reklam grubu ölçütü ekleme işlemleri içeriyorsa yüklemenizdeki işlemleri, önce tüm kampanya işlemlerinin, ardından tüm reklam grubu işlemlerinin ve son olarak tüm reklam grubu ölçütü işlemlerinin gelecek şekilde sıralayın.

  • Aynı türdeki işlemler, üst öğeye göre gruplandırılarak performansı artırabilir. Örneğin, bir dizi AdGroupCriterionOperation nesnenize sahipseniz farklı reklam gruplarındaki reklam grubu ölçütlerini etkileyen işlemleri 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 birden fazla eşzamanlı iş gönderirken, büyük iş boyutlarını korurken aynı nesnelerde aynı anda çalışan işlerin olasılığını azaltmaya çalışın. RUNNING durumuna sahip birçok tamamlanmamış iş, aynı nesne grubunu değiştirmeye çalışır. Bu durum, kilitlenme benzeri koşullara yol açarak ciddi yavaşlamalara ve hatta iş hatalarına neden olabilir.

  • Sonuç tahmin edilemez olabileceğinden, aynı işte aynı nesneyi değiştiren birden fazla işlem göndermeyin.

Sonuçları en uygun şekilde alma

  • İş durumunu çok sık sorgulayın, aksi takdirde hız sınırı hatalarıyla karşılaşma riskiniz vardır.

  • Sayfa başına 1.000'den fazla sonuç almamalıdır. 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 ne kadar süre boyunca çalışmasına izin verileceğine dair bir üst sınır belirleyebilirsiniz. Yeni bir toplu iş oluştururken metadata.execution_limit_seconds alanını, tercih ettiğiniz zaman sınırını 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 seçeneğini 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'yi yeniden deneyerek bu hatayı giderebilirsiniz.

Sınırlamalar

  • Her BatchJob bir milyona kadar işlem destekler.

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

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

  • Her AddBatchJobOperationsRequest, maksimum 10.484.504 bayt boyutundadır. Bu sınırı aşarsanız INTERNAL_ERROR alırsınız. Göndermeden önce isteğin boyutunu 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);