Apache Airflow / المتقدم: المعالجة التاريخية والنشر وأدلة التعافي / الدرس 14
المنفذات والعمال وحدود النشر
تتبع إرسال المهمة وتنفيذها مع فصل التجاور وتوافق البيئة والسعة الخارجية.
في هذه الصفحة
أهداف الدرس
- مقارنة التنفيذ المحلي والعمال المنتظرين وحاوية لكل مهمة.
- شرح لماذا لا تثبت queued بدء شفرة المهمة.
يربط المنفذ القرار بالتنفيذ
يقرر المجدول أن نسخة المهمة أصبحت مؤهلة، ويرتب المنفذ المختار تشغيلها. يعمل منطق المنفذ داخل عملية المجدول؛ وليس بالضرورة خدمة منفصلة باسم executor ينبغي تشغيلها مستقلة. وقد يظل هدف التنفيذ عمليات محلية أو عمالاً بعيدين دائمين أو حاويات خاصة بكل مهمة وفق التنفيذ المختار. تعني queued دخول العمل مسار الإرسال، لا إثبات تشغيل جسم Python. احتفظ بأزمنة الانتقال وأدلة المنفذ عند تشخيص التأخر. وقد يدل غياب سجل المهمة على عدم وصولها إلى التنفيذ، بدلاً من أن دالتها التجارية نفذت بصمت دون نتيجة.
اختيار النمط من الحمل والعزل
يشترك التنفيذ المحلي في موارد المضيف مع الجدولة، وقد يناسب تصميماً محدوداً على جهاز واحد. وقد يوزع العمال الدائمون كلفة البدء، لكنهم يحتاجون توجيه صفوف وبيئات متوافقة ونموذج سعة للعمليات المشتركة. وقد توفر حاوية لكل مهمة تغليفاً مستقلاً مع كلفة بدء وبنية إضافية. لا يمنح أي نمط ذرية عمل أو عزل وصول يتجاوز ضوابط نشره الفعلية. ولا يضمن تطابق ملفات العامل ومكتباته مع بيئة معالج DAG. سجل مواضع توفر المزودين وتبعيات العمل، وراجع توافقها قبل الادعاء بأن تعريفاً ينجح تحليله سينفذ بالضرورة.
مقارنة الصف المطلوب وتغطية العمال
يقول المثال المحلي إن المهمة موجهة إلى reports، بينما يشترك العمال المتاحون في default وimports فقط. تكشف مقارنة المجموعات غياب تغطية التوجيه دون فحص صف حقيقي أو تشغيله. قد يوجد عامل متوافق في مكان آخر؛ لذا فالجرد المعطى افتراض صريح لا ادعاء باكتشاف الخدمات. شخّص مسار المنفذ المحدد قبل تغيير أسماء الصفوف. لا تستخدم كل المنفذات دلالات الصف نفسها، ولا يثبت اسم توجيه صالح توفر CPU أو ذاكرة أو صلاحيات خارجية. أبق إتاحة التوجيه وإتاحة موارد التشغيل سؤالين منفصلين.
task_queue = 'reports'
worker_queues = {'default', 'imports'}
covered = task_queue in worker_queues
assert not covered
print(covered)
False
يفتقد الجرد المعطى reports؛ ولا يستعلم عن منفذ أو صف حقيقي.
وصف بيئة التنفيذ دون تهيئتها
يسمي سجل JSON إصدارات اصطناعية للشفرة والبيئة، وعائلات مزودين مطلوبة، وعقد الأثر. إنه توثيق، لا بيان حاوية ولا أمر لتثبيت تبعيات. ينبغي للنشر الحقيقي بناء بيئة ثابتة والتحقق منها بمساره المعتمد، ثم توزيع تعريفات DAG أو حزم متوافقة. تحل الاعتمادات بآلية تشغيل مدعومة، ولا تضمّن في شفرة الصورة. وإذا فوض المشغل الحساب إلى خدمة أخرى، فلها بيئتها وعقد اكتمالها. لا تخلط نجاح بدء حاوية مهمة بنجاح الوظيفة البعيدة التي أرسلتها تلك المهمة؛ فهما مرحلتان تحتاجان دليلين.
{"code_version":"lab-report-v3","runtime_version":"lab-runtime-2","required_providers":["standard"],"artifact_contract":"immutable-manifest-v1","credential_source":"approved-runtime-lookup"}
توثق التسميات افتراضات وليست إصدارات حزم أو صوراً مختبرة أو تعليمات تثبيت.
فصل فشل الإرسال عن فشل المهمة
قد تنتظر المهمة لأن عاملاً مناسباً لا يقبلها، أو تفشل عند بدء العملية لتبعية مفقودة، أو تفشل لاحقاً بسبب مدخل تجاري غير صالح. يستلزم كل حد أدلة وعلاجاً مختلفين. اجمع حالة المجدول والمنفذ، ثم سجلات بدء العامل، ثم سجلات المهمة، مع هوية التشغيلة والمحاولة نفسها. لا تنشئ زيادة المحاولات على شفرة معيبة حزمة مفقودة ولا تصحح توجيهاً. لا يثبت المحتوى منفذاً ولا يشغل عاملاً ولا يتصل بصف أو عنقود. تتحقق المقارنة المحدودة وسجل JSON محلياً فقط، وتبقى الجدولة الفعلية وتوافق البيئة غير مختبرين.
الأخطاء الشائعة وإصلاحها
افتراض تنفيذ أول سطر لمهمة queued.
- لماذا يحدث؟
- الخلط بين الإرسال والتنفيذ.
- كيف تصلحه؟
- تتبع قبول المنفذ وبدء العامل والسجل منفصلة.
- كيف تتجنب تكراره؟
- احفظ أزمنة الانتقال وهوية المحاولة.
نجاح التحليل وفشل استيراد المزود على العامل.
- لماذا يحدث؟
- اختلاف بيئتي التعريف والتنفيذ.
- كيف تصلحه؟
- راجع البيئة الثابتة وتوافق المزود.
- كيف تتجنب تكراره؟
- تحقق من البيئتين قبل النشر.
توجيه مهمة لصف لا يخدمه عامل.
- لماذا يحدث؟
- اختلاف التوجيه واشتراكات العمال.
- كيف تصلحه؟
- صحح عقد التوجيه الخاص بالمنفذ.
- كيف تتجنب تكراره؟
- أدرج تغطية الصف في القبول.
اختبر فهمك
1. هل تجعل الحاوية المنفصلة لكل مهمة كتابة قاعدة بيانات خارجية ذرية مع نجاح المهمة؟
اعرض الحل المشروح
لا. عزل بيئة التشغيل والمعاملات الموزعة خاصيتان مختلفتان. تظل المهمة بحاجة إلى بروتوكول معاملي أو متحمل للتكرار تدعمه الوجهة، وإلى مصالحة النتائج غير المؤكدة. قد تحسن الحاوية التغليف وعزل العملية، بينما تبقى نافذة التعطل بين تطبيق الأثر وتسجيل حالة المهمة دون تغيير.
2. لماذا قد لا تفيد زيادة العمال المشتركين في default مهمة موجهة إلى reports؟
اعرض الحل المشروح
في منفذ يستخدم اشتراكات الصفوف، قد لا يقبل هؤلاء العمال تسمية توجيه المهمة أصلاً. تحقق أولاً من دلالات المنفذ المختار والصفوف المشترَك فيها، ثم افحص السعة الحرة. قد تزيد أعداد العمال الكلفة مع بقاء مشكلة الإرسال الأصلية، إذا ظل العمال عاجزين عن استلام المهمة المعنية.
أهم ما تعلمته
- للإرسال وبدء البيئة وتنفيذ العمل أدلة مختلفة.
- لا يلغي اختيار المنفذ عقود الآثار والنتائج الخارجية.