0Pricing
DevOps Bootcamp · Lekcja

Kiedy uruchamiają się handlery i flush_handlers

Kontrolowanie momentu uruchomienia handlerów na końcu play.

Kiedy uruchamiają się handlery i flush_handlers to bezpłatna lekcja DevOps Bootcamp na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej DevOps Bootcamp, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.

Handlery uruchamiają się na końcu

Domyślnie wszystkie powiadomione handlery uruchamiają się raz, na samym końcu playa, po zakończeniu każdego zadania. Nie w chwili otrzymania powiadomienia.

Dlaczego odkładać ich wykonanie

Odłożenie wykonania oznacza, że usługa zostanie uruchomiona ponownie raz, nawet po wielu zmianach konfiguracji. Pozwala to uniknąć niepotrzebnych restartów w trakcie playa i oszczędza czas.

Na hosta, nie globalnie

Czas wykonywania handlerów jest śledzony dla każdego hosta osobno. Każdy host uruchamia własne handlery z kolejki na końcu playa, niezależnie od pozostałych.

Problem z późnym restartem

Czasami późniejsze zadanie potrzebuje, aby usługa była już zrestartowana. Czekanie do końca playa jest wtedy zbyt późne, więc trzeba opróżnić kolejkę wcześniej.

Poznajemy flush_handlers

Zadanie meta flush_handlers wymusza natychmiastowe uruchomienie wszystkich oczekujących handlerów w środku playa.

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

To zadanie meta

flush_handlers to specjalne działanie meta, które steruje samym Ansible, zamiast modyfikować zdalny host.

Typowe zastosowanie

Zmień konfigurację, opróżnij kolejkę, aby usługa została zrestartowana, a następnie uruchom zadanie smoke test przeciwko świeżo zrestartowanej usłudze.

- 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

Błędy a handlery

Jeśli host zakończy działanie błędem przed końcem playa, jego oczekujące handlery zazwyczaj nie zostaną uruchomione. To jeden z powodów, dla których wcześniejsze opróżnienie kolejki może być bezpieczniejsze.

force_handlers jako zabezpieczenie

Ustaw force_handlers na true w playu, aby uruchamiać handlery z kolejki nawet wtedy, gdy host zakończy później działanie błędem. Jest to przydatne przy restartach wykonywanych w ramach porządkowania.

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

Opróżniaj kolejkę oszczędnie

Po flush_handlers sięgaj tylko wtedy, gdy kolejność rzeczywiście tego wymaga. Nadmierne używanie tej funkcji odbiera korzyść z grupowania, jaką zapewniają handlery.

Oś czasu

Zadania wykonują się od góry do dołu, handlery czekają w kolejce, a następnie wszystkie uruchamiają się na końcu playa, chyba że zostaną wcześniej wymuszone. ⏱️

Szybkie sprawdzenie

Muszą Państwo zrestartować usługę w trakcie playa, aby późniejsze zadanie mogło się z nią połączyć. Czego należy użyć?

Podsumowanie

Handlery uruchamiają się zwykle raz na końcu playa, osobno dla każdego hosta. flush_handlers pozwala uruchomić je wcześniej, a force_handlers umożliwia ich wykonanie mimo błędów. 🚀

Często zadawane pytania

Czy lekcja „Kiedy uruchamiają się handlery i flush_handlers” jest bezpłatna?

Tak — pełny tekst „Kiedy uruchamiają się handlery i flush_handlers” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu DevOps Bootcamp, przejdź na CoddyKit PRO. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.

Co nauczysz się w „Kiedy uruchamiają się handlery i flush_handlers”?

Kontrolowanie momentu uruchomienia handlerów na końcu play. Ćwiczysz DevOps Bootcamp z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć DevOps Bootcamp?

Nie wymagamy żadnego doświadczenia. DevOps Bootcamp w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Kiedy uruchamiają się handlery i flush_handlers”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji DevOps Bootcamp?

Tak. Każda lekcja DevOps Bootcamp zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Powiadamianie handlera o zmianie
  2. Definiowanie handlerów i wzorce restartu
  3. Kiedy uruchamiają się handlery i flush_handlers
  4. Listen: jeden wyzwalacz, wiele handlerów
← Powrót do DevOps Bootcamp