المهام المجدولة باستخدام Celery Beat
تشغيل المهام الدورية وفق جدول زمني
المهام المجدولة باستخدام Celery Beat درس مجاني في Django Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Django Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Django Academy 4 دروس في المجموع.
ما بعد المهام لمرة واحدة
حتى الآن، تعمل المهام عند وضعها في قائمة الانتظار. لكن بعض المهام يجب أن تعمل وفق جدول زمني: تقارير ليلية، وعمليات تنظيف كل ساعة، وملخصات أسبوعية. هنا يأتي دور Beat. ⏰
ما هو Celery Beat
Celery Beat هو مجدول. إنه عملية منفصلة تستيقظ في الوقت المحدد وتضع المهام المجدولة في قائمة الانتظار نفسها التي يقرأ منها العاملون.
Beat مع العامل
يقتصر دور Beat على وضع المهام في قائمة الانتظار وفق الجدول؛ فهو لا يشغّلها بنفسه. ما زلتم بحاجة إلى عامل يعمل لتنفيذ ما يضعه Beat في قائمة الانتظار.
تثبيت المجدول
تحفظ حزمة django-celery-beat جدولكم الزمني في قاعدة البيانات، ولذلك يمكنكم حتى تعديله من لوحة الإدارة لاحقًا. ثبّتوها أولًا.
pip install django-celery-beatتحديد جدول Beat
في الإعدادات، يمثّل CELERY_BEAT_SCHEDULE قاموسًا يربط اسمًا بمسار مهمة وبوتيرة تشغيلها.
CELERY_BEAT_SCHEDULE = {
"daily-report": {
"task": "reports.tasks.send_report",
"schedule": 86400.0,
},
}الفواصل الزمنية بالثواني
يعني الرقم العادي «كل N ثانية». لذلك تعني 86400.0 مرة واحدة يوميًا، وتعني 3600.0 مرة واحدة كل ساعة. هذا بسيط، لكنه جامد قليلًا بالنسبة إلى التقويمات الفعلية.
Crontab للتقويمات الفعلية
للتشغيل «الساعة 8 صباحًا كل يوم اثنين»، استخدموا جدول crontab. فهو يُكتب مثل سطر cron ويتعامل بدقة مع الأيام والساعات والدقائق.
from celery.schedules import crontab
schedule = crontab(hour=8, minute=0, day_of_week=1)إضافة Crontab
أدرجوا كائن crontab مباشرةً في قيمة الجدول للتحكم بدقة في موعد تشغيل المهمة.
"weekly-digest": {
"task": "news.tasks.digest",
"schedule": crontab(hour=8, minute=0, day_of_week="mon"),
}تشغيل عملية Beat
شغّلوا Beat في طرفية خاصة به إلى جانب العامل. أصبح لديكم الآن ثلاث عمليات: خادم الويب، والعامل، ومجدول beat.
celery -A myproject beat -l infoتجنبوا تكرار Beat
شغّلوا عملية Beat واحدة فقط. فوجود مجدولين يعني تشغيل كل مهمة مرتين، مما قد يؤدي إلى إرسال رسائل البريد مرتين أو تحصيل الرسوم من المستخدمين مرتين. 🚫
تعديل الجداول من لوحة الإدارة
مع django-celery-beat، تُحفظ الجداول في قاعدة البيانات، ولذلك يمكن لغير المطورين إضافة المهام الدورية أو إيقافها مؤقتًا مباشرةً من لوحة إدارة Django.
تحقق سريع
ما العلاقة بين Celery Beat والعامل؟
مراجعة: المهام المجدولة
يضع Celery Beat المهام في قائمة الانتظار وفق جدول زمني باستخدام الفواصل الزمنية أو crontab. شغّلوا Beat واحدًا بالضبط إلى جانب عامل، وعدّلوا الجداول من لوحة الإدارة. 🗓️
تعلم Python مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 30
- الدروس
- 120
الأسئلة الشائعة
هل درس «المهام المجدولة باستخدام Celery Beat» مجاني؟
نعم — نص درس «المهام المجدولة باستخدام Celery Beat» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Django Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Django Academy 4 دروس في المجموع.
ماذا ستتعلم في «المهام المجدولة باستخدام Celery Beat»؟
تشغيل المهام الدورية وفق جدول زمني تتمرن على Django Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Django Academy؟
لا تُشترط خبرة سابقة. Django Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «المهام المجدولة باستخدام Celery Beat»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Django Academy هذا؟
نعم. كل درس في Django Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- لماذا تحتاج إلى مهام في الخلفية
- إعداد Celery مع وسيط
- كتابة واستدعاء @shared_task
- المهام المجدولة باستخدام Celery Beat