0Pricing
DevOps Bootcamp · درس

متى تعمل Handlers وflush_handlers

تحكّم في توقيت تشغيل Handler في نهاية Play

متى تعمل Handlers وflush_handlers درس مجاني في DevOps Bootcamp على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في DevOps Bootcamp، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.

تُشغَّل Handlers في النهاية

افتراضيًا، تُشغَّل جميع handlers التي أُرسل إليها إشعار مرة واحدة في نهاية play تمامًا، بعد انتهاء كل مهمة. وليس لحظة إرسال الإشعار إليها.

لماذا نؤجلها؟

يعني التأجيل أن الخدمة ستُعاد تشغيلها مرة واحدة حتى بعد إجراء تغييرات عديدة في الإعدادات. وهذا يتجنب عمليات إعادة التشغيل غير الضرورية أثناء play ويوفر الوقت.

لكل مضيف، وليس بشكل عام

يُتتبَّع توقيت handler لكل مضيف. ويشغّل كل مضيف handlers الموجودة في قائمته عند نهاية play، بشكل مستقل عن المضيفين الآخرين.

مشكلة إعادة التشغيل المتأخرة

تحتاج مهمة لاحقة أحيانًا إلى أن تكون الخدمة قد أُعيد تشغيلها بالفعل. ويكون الانتظار حتى نهاية play متأخرًا جدًا، لذلك تحتاجون إلى تنفيذ flush مبكرًا.

تعرّفوا على flush_handlers

تجبر مهمة meta flush_handlers جميع handlers المعلقة على التشغيل فورًا، في منتصف play.

- name: Run queued handlers now
  ansible.builtin.meta: flush_handlers

إنها مهمة meta

إن flush_handlers إجراء meta خاص يتحكم في Ansible نفسه بدلًا من التفاعل مع المضيف البعيد.

استخدام نموذجي

غيّروا الإعداد، ثم نفّذوا flush لإعادة تشغيل الخدمة، وبعد ذلك شغّلوا مهمة smoke test على الخدمة التي أُعيد تشغيلها للتو.

- name: Update config
  ansible.builtin.template:
    src: app.j2
    dest: /etc/app.conf
  notify: Restart app
- ansible.builtin.meta: flush_handlers
- name: Check health
  ansible.builtin.uri:
    url: http://localhost/health

الأعطال وHandlers

إذا تعطل مضيف قبل نهاية play، فعادةً لا تُشغَّل handlers المعلقة الخاصة به. وهذا أحد أسباب كون تنفيذ flush مبكرًا أكثر أمانًا أحيانًا.

‏force_handlers كشبكة أمان

اضبطوا force_handlers على true في play لتشغيل handlers الموجودة في قائمة الانتظار حتى عند تعطل مضيف لاحقًا. وهذا مفيد لإعادة التشغيل اللازمة للتنظيف.

- hosts: web
  force_handlers: true
  tasks:
    - ...

نفّذوا Flush باعتدال

استخدموا flush_handlers فقط عندما يتطلب ترتيب التنفيذ ذلك فعلًا. فالإفراط في استخدامه يلغي فائدة التجميع التي تمنحكم إياها handlers.

الخط الزمني

تُشغَّل المهام من الأعلى إلى الأسفل، وتنتظر handlers في قائمة انتظار، ثم تُشغَّل جميعًا عند نهاية play ما لم تنفذوا flush قبل ذلك. ⏱️

تحقق سريع

يجب إعادة تشغيل خدمة في منتصف play حتى تتمكن مهمة لاحقة من الوصول إليها. ماذا تستخدمون؟

مراجعة

تُشغَّل handlers عادةً مرة واحدة عند نهاية play ولكل مضيف. استخدموا flush_handlers لتشغيلها مبكرًا، واستخدموا force_handlers لتجاوز الأعطال. 🚀

الأسئلة الشائعة

هل درس «متى تعمل Handlers وflush_handlers» مجاني؟

نعم — نص درس «متى تعمل Handlers وflush_handlers» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة DevOps Bootcamp، انتقل إلى CoddyKit PRO. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.

ماذا ستتعلم في «متى تعمل Handlers وflush_handlers»؟

تحكّم في توقيت تشغيل Handler في نهاية Play تتمرن على DevOps Bootcamp مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ DevOps Bootcamp؟

لا تُشترط خبرة سابقة. DevOps Bootcamp على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «متى تعمل Handlers وflush_handlers»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس DevOps Bootcamp هذا؟

نعم. كل درس في DevOps Bootcamp يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. إشعار Handler عند حدوث تغيير
  2. تعريف Handlers وأنماط إعادة التشغيل
  3. متى تعمل Handlers وflush_handlers
  4. Listen: مُشغّل واحد وعدة Handlers
← العودة إلى DevOps Bootcamp