عن المشروع

Luigi هي حزمة بايثون (تم اختبارها على Python 3.10 حتى 3.14) لبناء خطوط أنابيب معقدة من الوظائف المجمعة. تتعامل مع حل التبعيات، وإدارة سير العمل، والتصور، ومعالجة الأخطاء، والتكامل مع سطر الأوامر، والمزيد. التثبيت يتم عبر pip: `pip install luigi` للحصول على أحدث إصدار مستقر من PyPI، أو `pip install luigi[toml]` لإضافة دعم الإعدادات القائمة على TOML. يمكن تثبيت الكود الأحدث مباشرة من مستودع GitHub. الخلفية: تعالج Luigi الأعمال الروتينية المرتبطة عادةً بالعمليات المجمعة طويلة الأمد. يمكن أن تكون المهام أي شيء، لكنها غالبًا وظائف طويلة الأمد مثل وظائف Hadoop، أو تفريغ البيانات من أو إلى قواعد البيانات، أو تشغيل خوارزميات التعلم الآلي. لا يُقصد من Luigi أن تحل محل أدوات معالجة البيانات منخفضة المستوى مثل Hive أو Pig أو Cascading؛ بل تقوم بربط العديد من المهام معًا، حيث يمكن أن تكون كل مهمة استعلام Hive، أو وظيفة Hadoop بلغة Java، أو وظيفة Spark بلغة Scala أو Python، أو مقتطف كود بايثون، أو تفريغ جدول قاعدة بيانات، أو أي شيء آخر. تدعم بناء خطوط أنابيب طويلة الأمد تضم آلاف المهام التي تستغرق أيامًا أو أسابيع لإكمالها. تأتي Luigi مع صندوق أدوات من قوالب المهام الشائعة، بما في ذلك دعم وظائف mapreduce بلغة Python في Hadoop بالإضافة إلى وظائف Hive وPig. كما توفر تجريدات لأنظمة الملفات لـ HDFS والملفات المحلية تضمن أن تكون عمليات نظام الملفات ذرية، بحيث لا ينهار خط أنابيب البيانات في حالة تحتوي على بيانات جزئية. يتضمن خادم Luigi واجهة ويب للبحث عن المهام وتصفيتها، ويوفر العارض (visualiser) نظرة عامة رسومية على مخطط تبعيات سير العمل، حيث تمثل كل عقدة مهمة يجب تشغيلها وتشير الألوان إلى المهام المكتملة مقابل المهام المعلقة. الفلسفة: من الناحية المفاهيمية، تشبه Luigi أداة GNU Make، حيث قد تعتمد المهام على مهام أخرى، وتشترك في بعض أوجه التشابه مع Oozie وAzkaban. الفرق الرئيسي هو أن Luigi لم تُبنَ خصيصًا لـ Hadoop ويمكن توسيعها بأنواع أخرى من المهام. كل شيء بلغة Python: بدلاً من إعدادات XML أو ملفات بيانات خارجية مماثلة، يتم تحديد مخطط التبعيات داخل Python، مما يسهل بناء مخططات تبعيات معقدة حيث يمكن أن تتضمن التبعيات حسابات تواريخ أو مراجع متكررة لإصدارات أخرى من نفس المهمة. لا يزال بإمكان سير العمل تشغيل أشياء خارج Python، مثل تشغيل نصوص Pig أو نسخ الملفات عبر scp. التبني: تُستخدم Luigi داخليًا في Spotify لتشغيل آلاف المهام يوميًا منظمة في مخططات تبعيات معقدة، معظمها وظائف Hadoop، لتشغيل التوصيات، وقوائم الأفضل، وتحليلات اختبار A/B، والتقارير الخارجية، ولوحات المعلومات الداخلية. يسرد ملف README العديد من المؤسسات الأخرى التي كتبت أو قدمت عروضًا حول Luigi، بما في ذلك Foursquare وStripe وBuffer وSeatGeek وTreasure Data وAdRoll وGroupon/OrderUp وRed Hat Marketing Operations وGetNinjas وvoyages-sncf.com وOpen Targets وLeipzig University Library وGlossier وData Revenue وUppsala University وGIPHY وxtream وCIAN، بالإضافة إلى شركات أخرى لم تنشر عنه. العدد الدقيق للمستخدمين غير معروف لأن Luigi مفتوح المصدر دون حواجز تسجيل. تشمل الروابط الخارجية قائمة بريدية على Google Groups للمناقشات والأسئلة، وإصدارات PyPI، وكود المصدر على GitHub، ومكوّن تكامل Hubot لـ Slack وHipchat وخدمات مماثلة. المؤلفون: تم بناء Luigi في Spotify، بشكل أساسي بواسطة Erik Bernhardsson وElias Freider، مع العديد من المساهمين الآخرين منذ أن أصبح مفتوح المصدر في أواخر عام 2012. كان Arash Rouhani هو المشرف الرئيسي من 2015 إلى 2019، وفريق البيانات في Spotify يحافظ الآن على Luigi.