Apache Airflow / دليل حلول تحريري
تشغيلة مجدولة مفقودة أو تعالج فترة خاطئة
تشخيص الجدول الزمني والجاهزية والسياق قبل إنشاء تشغيلة تاريخية.
قاعدة معرفة للقراءة فقط · بلا تعليقات عامة
تعرّف على الأعراض
قد لا يظهر تقرير يومي اصطناعي في الموعد المتوقع، أو قد تنجح مهمته لكنها تقرأ تاريخ عمل مختلفاً. وقد تختلف تسمية التشغيلة الظاهرة عن طابع بدء العامل، مما يستلزم تحديد معنى كل زمن قبل الحكم على الجدولة.
افهم الأسباب المحتملة
- قد يبني التوقع على جدول فترات بيانات بينما يستخدم النشر دلالات لحظة التحفيز، أو قد تستبدل المهمة مدخلها المعلن بتاريخ اليوم حسب الساعة الجدارية. وهناك احتمالات مستقلة، منها إيقاف الجدولة وسياسة catchup وغياب جاهزية المدخلات؛ ولا يثبت عرض واحد أياً منها وحده.
تحديد الجدول الفعلي ومسار التحفيز
سجل قيمة schedule الفعلية، وحد البداية، والمنطقة الزمنية، وسياسة catchup، وسلوك الجدول الزمني الذي حُل إليه التعريف. فقد تختلف افتراضيات cron في Airflow 3 عن افتراضات الفترات في الإصدارات السابقة؛ لذلك لا تكفي السلسلة @daily وحدها لإثبات نطاق بيانات معين. ميّز التشغيلة التي أنشأها الجدول من تشغيلة يدوية أو تشغيلة حفزها تحديث أصل، ثم فسر مفاتيح السياق وفق هذا المسار. استخدم التعريف والأدلة الموجودة في الواجهة دون تغيير إعداد المجدول. هناك فرق بين تشغيلة لم يحِن وقت أهليتها وتشغيلة أصبحت مؤهلة لكنها تنتظر السعة؛ ولا ينبغي معالجة الحالتين بإعادة تاريخية واحدة دون تشخيص.
مقارنة نطاق العمل المقصود بالمختار
اكتب فترة العمل المطلوبة بصورة مستقلة عن حدود المصدر التي اختارتها المهمة فعلياً. إذا كان التقرير للأول من أكتوبر، فلا يجوز أن يقرأ بيانات الثالث بصمت لمجرد أن العامل بدأ متأخراً. افحص استبعاد حد النهاية والمنطقة الزمنية التجارية، بما فيها حدود التقويم عند الحاجة. في Airflow 3 قد تفتقد تشغيلة يدوية أو محفزة بأصل مفاتيح الفترة إذا لم يكن لها logical_date؛ واستبدالها بـnow يخفي خللاً في العقد. عرّف تطبيعاً صريحاً للمدخلات لكل مسار مدعوم وارفض غياب السياق المطلوب. يوضح المثال المحلي اختلاف التاريخين فقط؛ ولا يتصل بـAirflow أو يقرأ بيانات المصدر.
intended_partition = '2026-10-01'
worker_start_date = '2026-10-03'
assert intended_partition != worker_start_date
print(intended_partition)
2026-10-01
يبقى القسم الأول من أكتوبر رغم البدء المتأخر؛ ولا يقيم جدول.
فصل أهلية الجدولة عن جاهزية البيانات
افحص أولاً اكتشاف تعريف DAG وعدم إيقاف جدولته، ثم تحقق من اكتمال الفترة المقصودة وفق الجدول المختار، ومن حدود التشغيلات النشطة والموارد التي قد تمنع التقدم. افحص جاهزية المدخلات بعد ذلك بصورة مستقلة؛ فإنشاء تشغيلة لا يثبت وجود بيان مصدرها ولا اكتماله. قد يعمل حساس ينتظر الفترة الصحيحة بصورة سليمة، رغم توقع المستخدم ظهور التقرير فوراً. احفظ حالات التشغيلة والمهام وأزمنتها بدقة، بدلاً من استنتاج السبب من خلية فارغة واحدة في العرض. ولا تعلّم مهمة ناجحة يدوياً لمجرد جعل الواجهة تطابق توقعاً لم تتحقق صحته.
اختيار تصحيح محدود يحفظ المعنى
إذا كانت دلالات الجدول الزمني خاطئة، فراجع عقد الجدول الصريح والتغطية التاريخية الموجودة قبل تعديل التعريف ضمن إجراء مصرح به. وإذا كانت المهمة تختار تاريخ اليوم، فأصلح تطبيع مدخل الفترة واختبر بيانات تاريخية تنفذ متأخرة. أما إذا ثبت فوات فترة مطلوبة، فأعد خطة ملء تاريخي محدودة تحدد تغطية المصدر وسياسة التشغيلات الموجودة وسلوك الناتج المتحمل للتكرار. لا ينفذ هذا الدليل أي تغيير للحالة. تظل قائمة التواريخ أو المقارنة المنطقية دليلاً للتخطيط فقط؛ ويتطلب القبول النهائي مقارنة الأقسام المقصودة بالآثار المتحقق منها بعد تنفيذ مستقل مصرح به.
تحقق من نجاح الإصلاح
تحقق من فترة مجدولة تنفذ في موعدها، وفترة تاريخية تنفذ متأخرة، ومن كل مسار يدوي أو محفز بأصل تدعمه المهمة. افحص حدود المصدر الدقيقة وهوية الناتج المقبول، وأدرج سجلاً عند حد النهاية. تأكد من أن غياب السياق المطلوب يسبب فشلاً صريحاً، ومن عدم إعادة إنشاء فترة غير مرتبطة بالمشكلة أو استبدال ناتجها.
امنع تكرار المشكلة
- احفظ دلالات الجدول والمنطقة الزمنية وقواعد أقسام المصدر ضمن عقد DAG. استخدم حدود بداية ثابتة وبيانات اختبار تمثل الفترات فعلياً. وعند الترقية، راجع سلوك الجدول والسياق بدلاً من الاعتماد على افتراضيات تتذكرها من إصدار أقدم.