يُرجى مراعاة هذه الإرشادات عند استخدام
BatchJobService
.
تحسين معدل نقل البيانات
يُفضّل استخدام عدد قليل من الوظائف الأكبر حجمًا بدلاً من العديد من الوظائف الأصغر حجمًا.
ترتيب العمليات المحمَّلة حسب نوع العملية على سبيل المثال، إذا كانت مهمتك تحتوي على عمليات لإضافة حملات ومجموعات إعلانية ومعايير مجموعات إعلانية، رتِّب العمليات في عملية التحميل بحيث تكون جميع عمليات الحملة أولاً، ثم جميع عمليات المجموعة الإعلانية، وأخيراً جميع عمليات معايير المجموعة الإعلانية.
ضمن العمليات من النوع نفسه، يمكن أن يؤدي تجميعها حسب المصدر الرئيسي إلى تحسين الأداء. على سبيل المثال، إذا كانت لديك سلسلة من عناصر
AdGroupCriterionOperation
، قد يكون من الأفضل تجميع العمليات حسب المجموعة الإعلانية، بدلاً من خلط العمليات التي تؤثّر في معايير المجموعة الإعلانية في مجموعات إعلانية مختلفة.
تجنُّب مشاكل المعالجة المتزامنة
عند إرسال عدة مهام متزامنة للحساب نفسه، حاوِل تقليل احتمالية تنفيذ المهام على العناصر نفسها في الوقت نفسه، مع الحفاظ على أحجام المهام الكبيرة. تحاول العديد من المهام غير المكتملة التي تحمل الحالة
RUNNING
تغيير المجموعة نفسها من العناصر، ما قد يؤدي إلى حالات تشبه مثبّت التجزئة، ما يؤدي إلى إبطاء شديد في الأداء وحتى تعذّر إكمال المهام.لا ترسِل عمليات متعدّدة تُغيّر العنصر نفسه في مهمة المعالجة نفسها، لأنّ النتيجة قد تكون غير متوقّعة.
استرداد النتائج على النحو الأمثل
لا تُستخدِم استطلاعات حالة المهمة بشكل متكرّر جدًا، وإلا قد تواجه أخطاء تتعلّق بالحدّ الأقصى لمعدّل الزحف.
لا تستردّ أكثر من 1,000 نتيجة في كل صفحة. يمكن أن يعرض الخادم عددًا أقل من ذلك بسبب الحمولة أو عوامل أخرى.
سيكون ترتيب النتائج هو نفسه ترتيب التحميل.
إرشادات إضافية حول الاستخدام
يمكنك ضبط حدّ أقصى لمدة تشغيل إحدى مهام الدُفعات قبل إلغائها. عند إنشاء وظيفة مجمّعة جديدة، اضبط الحقل
metadata.execution_limit_seconds
على الحدّ الزمني المفضّل لديك، بالثواني. لا يتوفّر حدّ زمني افتراضي إذا لم يتم ضبطmetadata.execution_limit_seconds
.ننصحك بعدم إضافة أكثر من 1,000 عملية لكل
AddBatchJobOperationsRequest
واستخدامsequence_token
لتحميل بقية العمليات إلى المهمة نفسها. استنادًا إلى محتوى العمليات، قد يؤدي إجراء عدد كبير جدًا من العمليات فيAddBatchJobOperationsRequest
واحد إلى حدوث خطأREQUEST_TOO_LARGE
. يمكنك معالجة هذا الخطأ عن طريق تقليل عدد العمليات وإعادة محاولةAddBatchJobOperationsRequest
.
القيود
يتيح كل
BatchJob
ما يصل إلى مليون عملية.يمكن أن يتضمّن كل حساب ما يصل إلى 100 مهمة نشطة أو في انتظار المراجعة في الوقت نفسه.
تتم تلقائيًا إزالة المهام التي تنتظر المراجعة والتي مرّ عليها أكثر من 7 أيام.
يبلغ الحد الأقصى لحجم كل
AddBatchJobOperationsRequest
10,484,504 بايت. وإذا تجاوزت هذا العدد، ستتلقّى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);