Apache Airflow / الأساسي: التعريفات والفترات وتنفيذ المهام الآمن / الدرس 4
المشغلات والاتصالات والقوالب
اختيار عقد المشغل وإدراج قيم التشغيل دون خلط الإعداد والأسرار وصيغة التنفيذ.
في هذه الصفحة
أهداف الدرس
- تمييز المشغل وHook ومعرف الاتصال.
- مراجعة الحقول القالبية وحدود تمرير المعاملات الآمنة.
يحدد المشغل سلوك المهمة
يغلف المشغل نوع عمل في مهمة Airflow، ويوفر hook واجهة لنظام خارجي، بينما يختار معرف الاتصال معلومات اتصال مضبوطة وفق قواعد البحث في النشر. تختلف هذه المسؤوليات عن task_id الذي يحدد عقدة المخطط. توفر المزودات تكاملات متعددة ومتطلبات إصدارات خاصة؛ لذلك قد لا يبقى صنف من درس قديم في مسار استيراده نفسه. راجع توثيق المزود وتوافق البيئة المثبتة قبل الممارسة المستقلة. اختيار المشغل اختيار لسلوك التنفيذ والقوالب والمحاولات والنتائج، لا مجرد تسمية مناسبة لمربع في الرسم.
الإشارة إلى الأسرار بدلاً من تضمينها
ينبغي أن يشير DAG عادة إلى الاتصال بمعرف ثابت، بدلاً من تضمين كلمة مرور أو رمز في المصدر. يستطيع النشر حل المعرف بخلفية أسرار مدعومة أو إعداد اتصال. لا يثبت اسم الاتصال قدرة هوية المهمة الحالية على جلبه أو الوصول إلى الهدف. أبق قيم البيئة خارج منطق العمل القابل لإعادة الاستخدام، ولا تطبع كائنات الاتصال كاملة للتصحيح. قد يرى جمهور أوسع السجلات والقوالب المعروضة مقارنة بمخزن الأسرار. يستخدم الدرس أسماء اصطناعية فقط، ولا يقرأ اتصالاً حقيقياً أو اعتماد بيئة أو نقطة مضبوطة.
تعرض الحقول القالبية الموثقة فقط
تعالج تعبيرات Jinja في الحقول التي يوثقها المشغل كحقول قالبية، وعند مرحلة التشغيل المناسبة. لا يضمن وضع الأقواس في معامل Python اعتباطي عرضه. وبالعكس، قد يزيل تنسيق Python المبكر الأقواس أو يغيرها. افحص template_fields واستخدم قيماً تشغيلية صريحة حيث أمكن. ليست معاملات TaskFlow سطح Jinja تلقائياً عاماً. ولا يعقم العرض معرفات SQL أو صيغة shell؛ فقد يولد القالب نصاً تنفيذياً خطراً إذا أدرج قيماً غير موثوقة دون ربط معاملات والتحقق وفق واجهة الوجهة.
مراجعة حقل دون تشغيل shell
يعرض الجزء إعلان BashOperator توضيحياً واحداً بهوية مهمة صريحة. يدرج تاريخ الفترة التشغيلية في تسمية مطبوعة بسيطة، لكنه يبقى غير قابل للتنفيذ لأن بيئة Airflow لم تثبت أو تختبر. يقع التعبير في bash_command الموثق كحقل قالبي في مشغل المزود. يحتاج أي أمر حقيقي يستهلك مدخلاً من المستخدم مراجعة مستقلة للاقتباس وتمرير المعاملات. لا تعمم مثال echo الاصطناعي الثابت وصفة لإدراج طلبات اعتباطية في shell. تعتمد التسمية المتوقعة على الفترة المعلنة وسياق المشغل الفعلي.
from airflow.providers.standard.operators.bash import BashOperator
label = BashOperator(
task_id='label_interval',
bash_command="echo report-{{ data_interval_start | ds }}",
)
لفترة تبدأ 2026-10-01 تكون التسمية report-2026-10-01؛ ولم يشغل المشغل.
فصل معامل القيمة عن النص التنفيذي
يفصل المثال المحلي بنية استعلام SQL عن tuple قيم المعاملات. لا ينفذ SQL ولا يدعي نمط مواضع يتوقعه مزود Airflow معين؛ فعلامة السؤال اتفاق توضيحي معلن. الحد المهم أن تاريخ الفترة بيانات لا جزء من صيغة الاستعلام. تحتاج أسماء الجداول عادة تحقق معرفات بقائمة سماح، لا ربط قيمة عادي. تتفاعل واجهات معاملات المزود والقوالب، فراجع توثيقها معاً. لا يثبت عرض استعلام بنجاح أنه اختار صفوف الفترة المقصودة أو أن للمهمة صلاحيات قاعدة البيانات المناسبة.
query = 'SELECT parcel_id FROM lab_parcels WHERE business_date = ?'
parameters = ('2026-10-01',)
assert '?' in query
assert parameters == ('2026-10-01',)
assert '2026-10-01' not in query
print(parameters[0])
2026-10-01
لا تعمل قاعدة أو إضافة؛ ونمط الموضع توضيحي ويجب أن يطابق الواجهة الفعلية.
الأخطاء الشائعة وإصلاحها
ظهور كلمة مرور في سجلات المهمة المعروضة.
- لماذا يحدث؟
- تضمين السر في المصدر أو حقل قابل للطباعة.
- كيف تصلحه؟
- استخدم حل اتصال معتمداً وعالج الكشف بمسار الحادث.
- كيف تتجنب تكراره؟
- راجع السجلات والقوالب بحثاً عن قيم حساسة.
بقاء الأقواس نصاً حرفياً في معامل المهمة.
- لماذا يحدث؟
- الحقل غير قالبي أو افتراض العرض في واجهة خاطئة.
- كيف تصلحه؟
- افحص الحقول الموثقة ومرر قيماً صريحة عند الملاءمة.
- كيف تتجنب تكراره؟
- اختبر العرض بسياق تشغيل ممثل.
تغيير نص SQL المعروض لبنية الاستعلام عرضاً.
- لماذا يحدث؟
- إدراج قيم غير موثوقة كصيغة تنفيذية.
- كيف تصلحه؟
- استخدم معاملات الوجهة وتحقق من المعرفات منفصلة.
- كيف تتجنب تكراره؟
- راجع حدود القالب والتنفيذ معاً.
اختبر فهمك
1. هل يثبت معرف الاتصال وجود اعتماد صالح وقابل للاستخدام على كل عامل؟
اعرض الحل المشروح
لا. إنه يسمي عقد بحث. يجب أن تحله الخلفية المختارة وهوية المهمة وبيئتها بصورة صحيحة، وتظل صلاحيات الهدف وقابلية الوصول الشبكي فحصين مستقلين. تحقق من هذه الحدود في نشر مصرح به دون طباعة اعتماد، ودون افتراض أن جهاز مطور يعمل يمثل جميع العمال.
2. لماذا لا يكفي نجاح عرض القالب لإثبات صحة استعلام يومي؟
اعرض الحل المشروح
يثبت العرض استبدال النص، لا معنى الفترة ولا أمان المعاملات ولا اكتمال المصدر. قد يعرض الاستعلام تاريخاً صالحاً ثم يختار منطقة زمنية خاطئة أو نهاية مشمولة. اختبر بيانات حدود العمل وقواعد معاملات الوجهة مستقلة عن سلوك عرض المشغل.
أهم ما تعلمته
- للمشغل وHook وهوية الاتصال مسؤوليات مختلفة.
- تستبدل القوالب القيم؛ وتحتاج سلامة التنفيذ حدوداً صريحة.