لماذا تحتاج إلى مهام في الخلفية
الحفاظ على سرعة الطلبات بتأجيل الأعمال البطيئة
لماذا تحتاج إلى مهام في الخلفية درس مجاني في Django Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Django Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Django Academy 4 دروس في المجموع.
مشكلة الطلب البطيء
بعض المهام بطيئة، مثل إرسال البريد الإلكتروني وتغيير حجم الصور واستدعاء واجهات API أخرى. إذا نفذتها view بشكل مباشر، فلن يجد المستخدم إلا انتظار مؤشر التحميل. 🐢
يجب أن تكون الطلبات سريعة
يعيد طلب الويب الجيد استجابة خلال أجزاء من الثانية. أما أي طلب يستغرق ثواني، فيحظر المتصفح ويشغل عامل Django الذي كان يمكنه خدمة مستخدم آخر.
انقل العمل البطيء خارج المسار
الحل هو background task: سلّم المهمة البطيئة إلى عامل منفصل، وأعد الاستجابة فورًا، ودع العمل يكتمل في الخلفية.
مثال واقعي
تخيل أن التسجيل يرسل رسالة ترحيب بالبريد الإلكتروني. يؤدي تنفيذ ذلك داخل view إلى إضافة بضع ثوانٍ بطيئة. أما وضعه في قائمة الانتظار فيتيح للمستخدم رؤية "مرحبًا!" فورًا.
def signup(request):
user = create_user(request)
send_welcome_email(user) # slow, blocks the response
return redirect("home")ما الذي يفعله طابور المهام
يخزن task queue المهام في قائمة انتظار. تضع عملية الويب المهمة فيها، ثم يلتقطها عمال منفصلون وينفذونها في الوقت المناسب لهم.
العناصر الثلاثة
ستتعرف إلى ثلاثة عناصر: producer (وهي Django view)، وbroker (وهو طابور الانتظار نفسه)، وworker (وهي العملية التي تنفذ المهمة).
نفّذ وانسَ
معظم مهام الخلفية هي من نوع "fire and forget": تضعها في قائمة الانتظار وتتابع عملك. لا ينتظر المستخدم النتيجة، وتُعاد المحاولات عند الفشل في الخلفية.
تعرّف إلى Celery
تُعد Celery أشهر قائمة مهام لـ Django. فهي تشغّل دوال Python في عمليات worker منفصلة تمامًا عن خادم الويب.
الاستدعاءات المتزامنة وغير المتزامنة
يُنفذ الاستدعاء العادي فورًا ويحظر التنفيذ. أما استدعاء مهمة async فيضع العمل في قائمة الانتظار ويعيد النتيجة فورًا، لتتابع view تنفيذها.
send_welcome_email(user) # runs now, blocks
send_welcome_email.delay(user_id) # queued, returns instantlyمهام مناسبة لقائمة الانتظار
من المرشحين الممتازين: رسائل البريد الإلكتروني، وإنشاء ملفات PDF والصور، واستدعاءات واجهات API التابعة لجهات خارجية، وتصدير البيانات، وأي عمل لا يحتاج المستخدم إلى انتظار اكتماله. ✉️
ليست السرعة وحدها
تضيف مهام الخلفية أيضًا المتانة: فإذا توقف مزود البريد الإلكتروني، يستطيع العامل إجراء retry لاحقًا بدلًا من إسقاط طلب المستخدم.
تحقق سريع
ما السبب الرئيسي لنقل العمل البطيء إلى background task؟
مراجعة: مهام الخلفية
يؤدي العمل البطيء إلى حظر الطلبات. وتسلّم task queue مثل Celery المهام إلى عمال منفصلين، فتبقى views سريعة ويمكن إعادة المحاولة عند الفشل. 🚀
تعلم Python مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 30
- الدروس
- 120
الأسئلة الشائعة
هل درس «لماذا تحتاج إلى مهام في الخلفية» مجاني؟
نعم — نص درس «لماذا تحتاج إلى مهام في الخلفية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Django Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Django Academy 4 دروس في المجموع.
ماذا ستتعلم في «لماذا تحتاج إلى مهام في الخلفية»؟
الحفاظ على سرعة الطلبات بتأجيل الأعمال البطيئة تتمرن على Django Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Django Academy؟
لا تُشترط خبرة سابقة. Django Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «لماذا تحتاج إلى مهام في الخلفية»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Django Academy هذا؟
نعم. كل درس في Django Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- لماذا تحتاج إلى مهام في الخلفية
- إعداد Celery مع وسيط
- كتابة واستدعاء @shared_task
- المهام المجدولة باستخدام Celery Beat