En İyi Uygulamalar ve Sınırlamalar

BatchJobService.

İşleme hızını artırın

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

  • Yüklenen işlemleri işlem türüne göre sıralayın. Örneğin, kampanyalar, reklam grupları ve reklam grubu ölçütleri ekleme işlemleri içerir, tüm kampanyanızın yükleme işleminizdeki işlemleri olmak üzere, daha sonra tüm reklam grubu işlemleri ve son olarak reklam grubu ölçüt işlemlerini kaldırın.

  • Aynı türdeki işlemlerde, bunları gruplandırmak için performansı artırabilir. üst kaynağa göre. Örneğin, web sitesi genelinde AdGroupCriterionOperation nesne, gruplandırmak daha verimli olabilir işlemi etkileyen işlemleri birbiriyle karıştırmak yerine, reklam grubuna göre farklı reklam gruplarındaki grup ölçütlerini kullanabilirsiniz.

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

  • Aynı hesap için birden fazla eşzamanlı iş gönderirken işlerin aynı anda aynı nesneler üzerinde çalışma olasılığı, bakımını yapmaktan bahsedeceğiz. Tamamlanmamış birçok iş ( RUNNING) aynı nesne kümesini değiştirmeye çalışmak, kilitlenme benzeri koşullara yol açabilir ciddi yavaşlamalara, hatta iş başarısızlarına yol açabilir.

  • Aynı nesneyi aynı içinde değiştiren birden fazla işlem göndermeyin çıkar ve sonuç tahmin edilemez olabilir.

En uygun şekilde sonuçları alma

  • İş durumunu çok sık kontrol etmeyin. Aksi takdirde oran sınırına ulaşma riskiyle karşı karşıya kalabilirsiniz. hatalar.

  • Sayfa başına 1.000'den fazla sonuç getirmeyin. Sunucu, daha az olabilir.

  • Sonuç sırası, yükleme sırası ile aynı olur.

Ek kullanım kılavuzu

  • Toplu işin ne kadar süreyle çalıştırılmasına izin verileceğine dair bir üst sınır ayarlayabilirsiniz. iptal ediliyor. Yeni bir toplu iş oluştururken metadata.execution_limit_seconds değerini saniye cinsinden tercih ettiğiniz zaman sınırına getirin. Varsayılan zaman yoktur sınır (metadata.execution_limit_seconds) ayarlanmaz.

  • Başına 1.000'den fazla işlem eklenmemesi önerilir AddBatchJobOperationsRequest ve sequence_token geri kalan işlemleri aynı işe yüklemeyi deneyin. Seçtiğiniz düzenleme moduna tek bir işlemde çok fazla sayıda işlem yapılması AddBatchJobOperationsRequest, REQUEST_TOO_LARGE hatasına neden olabilir. Siz Bu hatayı, işlem sayısını azaltıp işlemi yeniden deneyerek giderebilir. AddBatchJobOperationsRequest

Sınırlamalar

  • Her BatchJob, en fazla bir milyonu destekler. anlamına gelir.

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

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

  • Her bir AddBatchJobOperationsRequest maksimum 10.484.504 bayt boyutundadır. Bu sınırı aşarsanız INTERNAL_ERROR. İsteğin boyutunu dosya boyutu çok büyükse uygun olmayabilir.

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