ننصحك باتّباع هذه الإرشادات عند استخدام
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);