Skip to content

Kolejka Zadań Asynchronicznych (Task Queue) ​

Moduł Kolejki Zadań Asynchronicznych (automation_queue) w platformie Ammonly odpowiada za zarządzanie, monitorowanie i realizację długotrwałych operacji w tle.


Spis treści ​


1. Istota kolejki asynchronicznej ​

Operacje wymagające intensywnego przetwarzania danych (masowe aktualizacje, przeliczanie bilansów, importy plików, generowanie zbiorczych raportów) są delegowane do tabeli kolejki {tier}_mod_queue_records (p_, h_, c_, s_). Dzięki temu interfejs użytkownika pozostaje w pełni responsywny i nie blokuje połączeń HTTP.


2. Struktura rekordu zadania w kolejce ​

Tabela {tier}_mod_queue_records przechowuje kompletne metadane zadania:

PoleTypOpis
labelVARCHAR(255)Tytuł i opis zadania wyświetlany użytkownikowi.
job_typeVARCHAR(64)Typ zadania (np. bulk_update, recalculate_wbs, import_data).
statusVARCHAR(32)Status: waiting (oczekuje), reserved (w toku), done (zakończone), failed (błąd).
progress_percentINTWskaźnik postępu (0 - 100%).
processed_itemsINTLiczba dotychczas przetworzonych elementów.
total_itemsINTCałkowita liczba elementów do przetworzenia.
attemptsINTLiczba podjętych prób wykonania.
max_attemptsINTMaksymalna dozwolona liczba prób (domyślnie 3).
heartbeat_atDATETIMEZnacznik czasu ostatniej aktywności procesu wykonawczego.
error_messageTEXTKomunikat błędu w przypadku niepowodzenia.
output_logTEXTDziennik komunikatów diagnostycznych generowanych w trakcie wykonania.

3. Stany i cykl życia zadania ​

  1. waiting (Oczekujące): Zadanie utworzone przez API lub akcję użytkownika, oczekuje na pobranie przez robota.
  2. reserved (Pobrane / W trakcie): Zadanie zablokowane i aktywnie przetwarzane przez queue_worker.
  3. done (Zakończone sukcesem): Wszystkie elementy zostały pomyślnie przetworzone, progress_percent = 100.
  4. failed (Niepowodzenie): Wystąpił błąd krytyczny i wyczerpano dopuszczalny limit prób (attempts >= max_attempts).

4. Mechanizm Heartbeat i ochrona przed awarią ​

Aby zapobiec permanentnemu zablokowaniu zadań w stanie reserved w przypadku nagłego zatrzymania procesu robota (np. restart serwera, OOM killer), robot co kilka sekund aktualizuje kolumnę heartbeat_at. Jeśli zadanie w stanie reserved nie odnotowało aktualizacji przez ponad 5 minut, kolejny przebieg robota uznaje je za porzucone, zwalnia blokadę i podejmuje kolejną próbę wznowienia.


5. Monitoring i zarządzanie z poziomu panelu ​

  • Ścieżka w panelu: /automation/queue
  • Dostępne akcje:
    • Podgląd listy zadań z filtrowaniem wg statusu i typu zadania,
    • Wgląd w szczegółowy dziennik operacji (output_log) i komunikaty błędów,
    • Ręczne ponowienie nieudanego zadania lub anulowanie oczekującego.

Ammonly Documentation System