حقائق رئيسية
- يستخدم صيغة "المُزيّن" (Decorator) أولاً لتحديد الجدولة (مثلاً: @scheduler.every(5).minutes)
- يحفظ حالة المهام في ملف JSON لضمان استمرارها بعد إعادة تشغيل التطبيق
- يعمل داخل العملية نفسها (In-process)، مما يلغي الحاجة إلى Redis أو وسيط الرسائل
- يحتوي على لوحة تحكم اختيارية عبر FastAPI لمراقبة المهام قيد التشغيل
- هو حل بعملية واحدة (Single-process) وغير مخصص للمهام الموزعة
ملخص سريع
ظهر مُجدول مهام جديد لـ Python، وهو FastSchedulerCelery عندما يكون كل ما يحتاجونه هو دالة أساسية تعمل بمؤقت.
يقدم هذا الأداة الجديدة نهجاً م streamlined ومُبسط يعتمد على "المُزيّن" (Decorator) للجدولة داخل العملية نفسها. صُمم من أجل البساطة وسهولة الاستخدام، مقدماً بديلاً للتطبيقات التي لا تتطلب تعقيد قوائم المهام الموزعة. الفلسفة الأساسية هي توفير ما هو مطلوب بالضبط للجدولة المباشرة، ولا شيء أكثر.
المفهوم الأساسي
المشكلة الأساسية التي يهدف FastScheduler لحلها هي عدم التطابق بين تعقيد الأداة ومتطلبات المهمة. بالنسبة للعديد من تطبيقات Python، تقتصر الحاجة إلى جدولة المهام على مهام متكررة بسيطة. تم دفع تطوير هذا المُجدول الجديد بالنظر إلى أن الحلول الحالية غالباً ما تقدم حملاً إضافياً غير ضروري لهذه السيناريوهات.
كما أوضح المطور، "لقد قمت ببناء هذا الأمر لأنني استمررت في اللجوء إلى Celery لمهام جدولة بسيطة وكان الأمر يبدو وكأنه استهلاك مفرط". كان الهدف هو إنشاء أداة تتعامل مع المتطلبات المباشرة مثل "تشغيل هذه الدالة كل ساعة" أو "يومياً في الساعة 9 صباحاً" دون إلزام ببنية موزعة كاملة للمهام. هذا التركيز على البساطة هو السمة المميزة للمشروع.
"كنت أحتاج فقط إلى 'تشغيل هذه الدالة كل ساعة' أو 'يومياً في الساعة 9 صباحاً'، وليس عمالاً موزعين."
"لقد قمت ببناء هذا الأمر لأنني استمررت في اللجوء إلى Celery لمهام جدولة بسيطة وكان الأمر يبدو وكأنه استهلاك مفرط."
— مطور FastScheduler
الميزات الرئيسية والتصميم
يبني FastScheduler حول واجهة برمجة تطبيقات (API) نظيفة وسهلة الاستخدام تعتمد على مُزيّنات Python. يجعل هذا الخيار التصميمي من السهل دمج منطق الجدولة مباشرة في الدوال الحالية. صُممت الصيغة لتكون مقروءة و declarative، مما يسمح للمطورين بتحديد الجدولة بأقل قدر من الشفرة المتكررة.
تشمل الميزات الرئيسية:
- صيغة تعتمد على المُزيّن (Decorator) لتحديد الجدولة
- استمرارية الحالة عبر ملفات JSON
- لوحة تحكم اختيارية عبر FastAPI للمراقبة
- يعمل داخل العملية نفسها مع التطبيق الرئيسي
- لا يتطلب تبعات خارجية مثل Redis أو وسيط الرسائل
على سبيل المثال، يمكن للمطور استخدام @scheduler.every(5).minutes لجدولة دالة للتشغيل كل خمس دقائق، أو @scheduler.daily.at("09:00") للتنفيذ اليومي في وقت محدد. القدرة على حفظ الحالة في ملف JSON تضمن أن المهام المجدولة تتجاوز إعادة تشغيل التطبيق، وهي ميزة حيوية لأي أداة جدولة جادة.
المفاضلة المعمارية
القرار المعماري الأكثر أهمية في FastScheduler هو طبيعته التي تعمل داخل العملية الواحدة (In-process). ومن خلال العمل جنباً إلى جنب مع التطبيق الرئيسي، فإنه يتجنب تعقيد إعداد والحفاظ على عمليات عمال منفصلة، ووسيط رسائل، وخلفيات نتائج. هذا يجعله سهل الاستخدام والإدارة بشكل استثنائي للمشاريع الصغيرة أو التطبيقات ذات الاحتياجات الأبسط.
ومع ذلك، يأتي هذا الخيار التصميمي مع مفاضلة حاسمة. الأداة ليست مصممة للبيئات الموزعة. يصر مطورها على هذه الحدود:
"المفاضلة هي أنه يعمل بعملية واحدة فقط — إذا كنت بحاجة إلى عمال موزعين، التزم بـ Celery."
هذا يعني أنه بالنسبة للتطبيقات التي تتطلب توفر عالي، قياس أفقي، أو القدرة على توزيع المهام عبر عدة أجهزة، فإن FastScheduler ليس الأداة المناسبة. في هذه الحالات، تظل قائمة المهام الموزعة الكاملة الميزات مثل Celery هي الخيار الضروري. يحدد المشروع نفسه كأداة متخصصة لشريحة معينة، وليس بديلاً مباشراً لجميع الحلول الحالية.
المراقبة والرؤية
بينما يعطي FastScheduler الأولوية للبساطة، فإنه يتضمن أيضاً ميزة قيّمة للرؤية التشغيلية: لوحة تحكم اختيارية عبر FastAPI. توفر لوحة التحكم هذه واجهة للمستخدمين لمعرفة المهام التي تعمل حالياً، وجدولتها، وحالتها. هذا إضافة مهمة لأداة خفيفة الوزن، حيث تعالج الحاجة الشائعة لمراقبة وتصحيح المهام المجدولة.
بدون لوحة تحكم، يمكن أن يكون فهم حالة المهام داخل العملية الواحدة أمراً صعباً. ومن خلال التكامل مع FastAPI
نظرة مستقبلية
ينحت FastScheduler مكاناً محدداً في نظام Python البيئي من خلال توفير حل minimalist ويعمل داخل العملية الواحدة لجدولة المهام البسيطة. يعالج بنجاح إحباط المطورين الناجم عن استخدام أنظمة ثقيلة وموزعة مثل Celery لاحتياجات أساسية على جهاز واحد. واجهته التي تعتمد على المُزيّن واستمرارية الحالة تجعله خياراً جذاباً للتطبيقات الصغيرة إلى المتوسطة.
الصياغة الواضحة لمحدداته — وتحديداً طبيعته التي تعمل بعملية واحدة — هي علامة على أداة ذات نطاق محدد جيداً. لا يحاول أن يكون حلاً شاملاً لجميع الاحتياجات. بدلاً من ذلك، يقدم إجابة مركزة وأنيقة لمشكلة شائعة، مقدماً بديلاً قيماً للمطورين الذين يقدرون البساطة والدمج المباشر بدلاً من التعقيد الموزع.
"المفاضلة هي أنه يعمل بعملية واحدة فقط — إذا كنت بحاجة إلى عمال موزعين، التزم بـ Celery."
— مطور FastScheduler
الأسئلة الشائعة
ما هو FastScheduler؟
FastScheduler هو مُجدول مهام جديد لـ Python يستخدم صيغة "المُزيّن" (Decorator) أولاً لتحديد المهام المجدولة داخل العملية نفسها. صُمم كخيار خفيف الوزن بديل للأنظمة الأكثر تعقيداً مثل Celery لحالات الاستخدام البسيطة.
ما هي ميزاته الرئيسية؟
تشمل الميزات الرئيسية الجدولة عبر المُزيّنات، واستمرارية الحالة باستخدام ملفات JSON، ولوحة تحكم اختيارية عبر FastAPI للمراقبة، والقدرة على العمل بدون تبعات خارجية مثل Redis أو وسيط الرسائل.
ما هي الحدود الأساسية لـ FastScheduler؟
المفاضلة الرئيسية هي أنه مُجدول بعملية واحدة. لم يتم تصميمه للبيئات الموزعة ولا يمكنه التوسع عبر عمال متعددين. للمهام الموزعة، يُوصى بـ Celery.
كيف يتعامل مع إعادة تشغيل التطبيق؟
يحفظ FastScheduler حالة المهام المجدولة في ملف JSON. يسمح هذا للمُجدول باستئناف مهامه بعد إعادة تشغيل التطبيق دون فقدان تكوينه.




