0Pricing
DevOps Bootcamp · บทเรียน

Handler ทำงานเมื่อใดและ flush_handlers

ควบคุมเวลาที่ Handler ทำงานตอนจบ Play

Handler ทำงานเมื่อใดและ flush_handlers เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

ตัวจัดการทำงานเมื่อสิ้นสุด

โดยค่าเริ่มต้น ตัวจัดการที่ได้รับการแจ้งเตือนทั้งหมดจะทำงานครั้งเดียวเมื่อถึงสิ้นสุดเพลย์ หลังจากงานทุกงานเสร็จสิ้น ไม่ใช่ทันทีที่ได้รับการแจ้งเตือน

เหตุใดจึงเลื่อนการทำงาน

การเลื่อนการทำงานหมายความว่า บริการจะรีสตาร์ตเพียงครั้งเดียวแม้จะมีการเปลี่ยนแปลงการตั้งค่าหลายรายการ วิธีนี้ช่วยหลีกเลี่ยงการรีสตาร์ตที่ไม่จำเป็นระหว่างเพลย์และประหยัดเวลา

แยกตามโฮสต์ ไม่ใช่ทั้งระบบ

จังหวะเวลาของตัวจัดการจะถูกติดตามแยกตามโฮสต์ แต่ละโฮสต์จะเรียกใช้ตัวจัดการของตนเองที่อยู่ในคิวเมื่อสิ้นสุดเพลย์ โดยไม่ขึ้นต่อโฮสต์อื่น

ปัญหาการรีสตาร์ตล่าช้า

บางครั้งงานถัดไปต้องใช้บริการที่รีสตาร์ตแล้ว การรอจนเพลย์สิ้นสุดจึงสายเกินไป และคุณต้องสั่งให้ตัวจัดการในคิวทำงานก่อน

พบกับ flush_handlers

เมทางาน flush_handlers จะบังคับให้ตัวจัดการที่รออยู่ทั้งหมดทำงานทันทีระหว่างเพลย์

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

นี่คือเมทา Task

flush_handlers เป็นการกระทำพิเศษประเภท meta ที่ควบคุมตัว Ansible เอง แทนที่จะดำเนินการกับโฮสต์ระยะไกล

การใช้งานทั่วไป

เปลี่ยนการตั้งค่า สั่งให้ตัวจัดการในคิวทำงานเพื่อรีสตาร์ตบริการ จากนั้นเรียกใช้งานการทดสอบเบื้องต้นกับบริการที่เพิ่งรีสตาร์ต

- 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

ความล้มเหลวกับตัวจัดการ

หากโฮสต์ล้มเหลวก่อนเพลย์สิ้นสุด ตัวจัดการที่รออยู่มักจะไม่ทำงาน นี่เป็นเหตุผลหนึ่งที่การสั่งให้ตัวจัดการทำงานก่อนอาจปลอดภัยกว่า

force_handlers เป็นเครือข่ายความปลอดภัย

ตั้งค่า force_handlers เป็น true ในเพลย์ เพื่อให้ตัวจัดการที่อยู่ในคิวทำงานแม้โฮสต์จะล้มเหลวในภายหลัง มีประโยชน์สำหรับการรีสตาร์ตเพื่อเก็บกวาด

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

สั่งให้ตัวจัดการทำงานก่อนเท่าที่จำเป็น

เลือกใช้ flush_handlers เฉพาะเมื่อจำเป็นต้องควบคุมลำดับจริง ๆ การใช้มากเกินไปจะลดประโยชน์ด้านการรวมงานเป็นชุดที่ตัวจัดการมอบให้

ลำดับเวลา

งานจะทำงานจากบนลงล่าง ตัวจัดการจะรออยู่ในคิว จากนั้นทั้งหมดจะทำงานเมื่อถึงสิ้นสุดเพลย์ เว้นแต่คุณจะสั่งให้ทำงานก่อนหน้านั้น ⏱️

ตรวจสอบความเข้าใจ

คุณต้องรีสตาร์ตบริการระหว่างเพลย์ เพื่อให้งานถัดไปเรียกใช้บริการนั้นได้ ควรใช้สิ่งใด

สรุปทบทวน

โดยปกติ ตัวจัดการจะทำงานครั้งเดียวเมื่อเพลย์สิ้นสุด โดยแยกตามโฮสต์ ใช้ flush_handlers เพื่อเรียกใช้ก่อนเวลา และใช้ force_handlers เพื่อให้ทำงานต่อแม้เกิดความล้มเหลว 🚀

คำถามที่พบบ่อย

บทเรียน “Handler ทำงานเมื่อใดและ flush_handlers” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “Handler ทำงานเมื่อใดและ flush_handlers” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “Handler ทำงานเมื่อใดและ flush_handlers”

ควบคุมเวลาที่ Handler ทำงานตอนจบ Play คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “Handler ทำงานเมื่อใดและ flush_handlers” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม

ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. แจ้ง Handler เมื่อมีการเปลี่ยนแปลง
  2. กำหนด Handler และรูปแบบการเริ่มบริการใหม่
  3. Handler ทำงานเมื่อใดและ flush_handlers
  4. Listen: ตัวกระตุ้นเดียว หลาย Handler
← กลับไปที่ DevOps Bootcamp