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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- แจ้ง Handler เมื่อมีการเปลี่ยนแปลง
- กำหนด Handler และรูปแบบการเริ่มบริการใหม่
- Handler ทำงานเมื่อใดและ flush_handlers
- Listen: ตัวกระตุ้นเดียว หลาย Handler