أفضل الممارسات والقيود

ننصحك باتّباع هذه الإرشادات عند استخدام BatchJobService

تحسين سرعة معالجة البيانات

  • يفضل عدد أقل من الوظائف الأكبر حجمًا على العديد من الوظائف الأصغر.

  • يتم تحميل ترتيب العمليات حسب نوع العملية. على سبيل المثال، إذا كانت وظيفتك يحتوي على عمليات لإضافة الحملات والمجموعات الإعلانية ومعايير المجموعات الإعلانية، ترتيب العمليات في عملية التحميل حتى يتسنى لجميع عمليات العمليات أولاً، تليها كل وعمليات المجموعة الإعلانية، وأخيرًا جميع عمليات معايير المجموعة الإعلانية.

  • ويمكن تحسين الأداء لتجميعها ضمن عمليات من النوع نفسه. المصدر الأصلي على سبيل المثال، إذا كان لديك سلسلة من AdGroupCriterionOperation عناصر، يمكن أن يكون تجميعها أكثر كفاءة. العمليات حسب المجموعة الإعلانية، بدلاً من العمليات المختلطة التي تؤثر على الإعلان معايير المجموعة في المجموعات الإعلانية المختلفة.

تجنُّب مشاكل التزامن

  • عند إرسال وظائف متعددة متزامنة للحساب نفسه، جرِّب تقليل احتمالية تشغيل الوظائف على نفس الأشياء في نفس الوقت، بينما والحفاظ على أحجام المهام الكبيرة. العديد من الوظائف غير المكتملة (بحالة RUNNING) التي فحاول تغيير نفس مجموعة الكائنات يمكن أن يؤدي إلى ظروف تشبه القفل مما يؤدي إلى تباطؤ شديد وحتى حالات فشل الوظائف.

  • لا ترسِل عمليات متعددة تؤدي إلى تغيير الكائن نفسه في الإجراء نفسه. وظيفتها، حيث قد تكون النتيجة غير متوقعة.

استرداد النتائج على النحو الأمثل

  • عدم إجراء استطلاعات على حالة الوظيفة بشكل متكرر جدًا وإلا فأنت تخاطر بالوصول إلى حد المعدل الأخطاء.

  • لا تستردّ أكثر من 1,000 نتيجة في الصفحة الواحدة. يمكن أن يعرض الخادم أقلّ من ذلك بسبب التحميل أو عوامل أخرى.

  • وسيكون ترتيب النتائج هو نفسه ترتيب التحميل.

إرشادات إضافية حول الاستخدام

  • يمكنك ضبط حدّ أقصى للمدة المسموح بها لتنفيذ مهمة مجمّعة قبل قيد الإلغاء. عند إنشاء مهمة مجمعة جديدة، قم بتعيين metadata.execution_limit_seconds إلى الحد الزمني المفضل لديك بالثواني. لا يوجد وقت افتراضي الحد الأقصى إذا لم يتم ضبط metadata.execution_limit_seconds.

  • لا يوصى بإضافة أكثر من 1000 عملية لكل AddBatchJobOperationsRequest واستخدام sequence_token تحميل بقية العمليات إلى نفس الوظيفة. استنادًا إلى محتوى العمليات، ووجود عدد كبير جدًا من العمليات في عملية واحدة قد يتسبب AddBatchJobOperationsRequest في حدوث الخطأ REQUEST_TOO_LARGE. إِنْتَ معالجة هذا الخطأ بتقليل عدد العمليات وإعادة محاولة AddBatchJobOperationsRequest

القيود

  • تدعم كل BatchJob ما يصل إلى مليون العمليات التجارية.

  • يمكن أن يحتوي كل حساب على ما يصل إلى 100 مهمة نشطة أو معلّقة في الوقت نفسه.

  • تتم تلقائيًا إزالة المهام المعلَّقة التي مرّ عليها أكثر من 7 أيام.

  • كل AddBatchJobOperationsRequest يبلغ الحد الأقصى لحجمه 10484504 بايت. إذا تجاوزت هذا الحدّ، ستتلقّى INTERNAL_ERROR يمكنك تحديد حجم الطلب قبل إرساله واتخاذ الإجراء المناسب إذا كان كبيرًا جدًا.

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