När handlers körs och flush_handlers
Styr när handlers körs i slutet av en play
När handlers körs och flush_handlers är en gratis lektion i DevOps-bootcamp på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för DevOps-bootcamp, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.
Handlers körs i slutet
Som standard körs alla notifierade handlers en gång, allra sist i playen, efter att varje task har slutförts. Inte i det ögonblick då de notifierades.
Varför skjuta upp dem
Genom att skjuta upp dem startas en tjänst om en gång, även efter många konfigurationsändringar. Det undviker onödiga omstarter mitt i playen och sparar tid.
Per värd, inte globalt
Tidpunkten för handlers hanteras per värd. Varje värd kör sina egna köade handlers i slutet av playen, oberoende av de andra.
Problemet med sena omstarter
Ibland behöver en senare task att tjänsten redan har startats om. Att vänta till slutet av playen är för sent, så du måste tömma kön tidigare.
Möt flush_handlers
Metatasken flush_handlers tvingar alla väntande handlers att köras direkt, mitt i playen.
- name: Run queued handlers now
ansible.builtin.meta: flush_handlersDet är en meta-task
flush_handlers är en särskild meta-åtgärd som styr själva Ansible i stället för att påverka fjärrvärden.
Ett typiskt användningsfall
Ändra konfigurationen, töm kön så att tjänsten startas om och kör sedan en task med ett smoke test mot den nyligen omstartade tjänsten.
- 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/healthFel och handlers
Om en värd får ett fel innan playen är slut körs dess väntande handlers normalt inte. Det är en anledning till att en tidig tömning kan vara säkrare.
force_handlers som skyddsnät
Sätt force_handlers till true i en play för att köra köade handlers även när en värd får ett senare fel. Användbart för omstarter vid städning.
- hosts: web
force_handlers: true
tasks:
- ...Töm kön sparsamt
Använd flush_handlers endast när ordningen verkligen kräver det. Överanvändning tar bort den batchning som handlers ger dig.
Tidslinjen
Tasks körs uppifrån och ned, handlers väntar i en kö och körs sedan alla i slutet av playen, om du inte tömmer kön tidigare. ⏱️
Snabb kontroll
Du måste starta om en tjänst mitt i playen så att en senare task kan använda den. Vad använder du?
Sammanfattning
Handlers körs normalt en gång i slutet av playen, per värd. Använd flush_handlers för att köra dem tidigare och force_handlers för att de ska köras även vid fel. 🚀
Lär dig DevOps-bootcamp med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 142
- Lektioner
- 568
Vanliga frågor
Är lektionen ”När handlers körs och flush_handlers” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen DevOps-bootcamp, inklusive ”När handlers körs och flush_handlers”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.
Vad lär jag mig i ”När handlers körs och flush_handlers”?
Styr när handlers körs i slutet av en play Ni övar på DevOps-bootcamp med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig DevOps-bootcamp?
Du behöver inga förkunskaper. Utbildningen i DevOps-bootcamp på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.
Hur lång tid tar lektionen ”När handlers körs och flush_handlers”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här DevOps-bootcamp-lektionen?
Ja. Varje DevOps-bootcamp-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Meddela en handler vid ändring
- Definiera handlers och mönster för omstart
- När handlers körs och flush_handlers
- Listen: en utlösare, flera handlers