Przejdź do treści

Queuety

Silnik przepływów pracy WordPress.

Terminal
wp plugin install https://github.com/inline0/queuety/releases/latest/download/queuety.zip --activate

Najnowsze wydanie v0.22.0 GPL-2.0-or-later WordPress 6.4+, PHP 8.2+

W praktyce

Przepływ pracy zdefiniowany w PHP i polecenie procesu roboczego, które go uruchamia.

Przepływ pracy zatwierdzania

Przepływ pracy wykonuje krok, czeka 24 godziny, a następnie zatrzymuje się przy wait_for_approval() do czasu, gdy inny proces wyśle sygnał approval.

Opóźnienie jest przechowywane w bazie danych, więc przetrwa ponowne uruchomienie procesu roboczego i wdrożenia. Wcześnie wysłany sygnał zostaje zapisany i odebrany, gdy przepływ pracy dojdzie do oczekiwania. Anulowanie przebiegu wywołuje program obsługi on_cancel().

PHP
$workflow_id = Queuety::workflow( 'approval_flow' )
    ->then( SubmitRequestHandler::class )
    ->delay( hours: 24 )
    ->wait_for_approval()
    ->then( ProcessApprovalHandler::class )
    ->on_cancel( CleanupHandler::class )
    ->dispatch( [ 'request_id' => 99 ] );

// Later, from another process:
Queuety::signal( $workflow_id, 'approval', [ 'approved_by' => 'admin@example.com' ] );

Bezpośrednie przejmowanie MySQL

Każdy proces roboczy działa jako długotrwały proces WP-CLI i pobiera zadania bezpośrednio z MySQL za pomocą FOR UPDATE SKIP LOCKED.

Trwałe przepływy pracy

Procesy wieloetapowe z trwałym stanem, który przetrwa limity czasu PHP, awarie i ponowienia.

Maszyny stanów

Długotrwały stan sterowany zdarzeniami z Queuety::machine(): definiuj stany i przejścia, wysyłaj zdarzenia, przeglądaj oś czasu.

Sygnały i zatwierdzenia

wait_for_signal(), wait_for_approval() i wait_for_input() wstrzymują przepływ pracy do momentu otrzymania danych z zewnątrz.

Poziomy priorytetu

Cztery poziomy: od niskiego do pilnego. W kolejce zadania o wyższym priorytecie są pobierane jako pierwsze.

Ograniczanie liczby żądań

Limity dla każdego programu obsługi w ruchomym oknie czasowym. Proces roboczy, który pobierze zadanie objęte limitem częstotliwości, odkłada je z powrotem i czeka.

Zadania cykliczne

Harmonogramowanie interwałowe i oparte na cron. Wbudowany parser cron bez zewnętrznych zależności.

Kroki równoległe

Uruchamiaj kroki przepływu pracy równolegle i czekaj na ich zakończenie, zanim przejdziesz dalej.

Metryki i rejestrowanie

Trwały dziennik w bazie danych z przepustowością, średnim czasem trwania i czasem trwania p95 oraz współczynnikiem błędów dla każdego programu obsługi.

Rezerwowy mechanizm WP-Cron

Bez dostępu do powłoki zdarzenie WordPress cron uruchamiane co minutę wywołuje jednorazowy proces roboczy dla domyślnej kolejki.

Oprogramowanie pośredniczące

Oprogramowanie pośredniczące dla zadań w stylu onion obsługuje limity częstotliwości, ograniczanie wyjątków, unikalność, limity czasu i ochronę przed nakładaniem się zadań.

PHP 8.2+

Wyliczenia, klasy tylko do odczytu, wyrażenia match, promocja parametrów konstruktora i atrybuty PHP.

Dlaczego Queuety

Stan przechowywany w MySQL

Wiersze kolejki, stan przepływu pracy, dzienniki, sygnały i przesyłane strumieniowo fragmenty są przechowywane w MySQL, więc ponowne uruchomienie procesu roboczego nie powoduje utraty stanu orkiestracji. Na granicy każdego kroku aktualizacja stanu, zakończenie zadania i umieszczenie następnego zadania w kolejce są zatwierdzane w ramach jednej transakcji.

Poza żądaniem strony

WP-Cron uruchamia się tylko podczas odwiedzin strony, a 60-sekundowe wywołanie LLM zostaje przerwane przez 30-sekundowy limit czasu PHP. Procesy robocze Queuety działają w długotrwałym procesie WP-CLI i podejmują pracę bez oczekiwania na ruch.

Zabezpieczenia dla uruchomień agentów

for_each() z trybem kworum, bramkami zatwierdzania i limitami, takimi jak max_transitions() i max_state_bytes(), utrzymują długie przebiegi agentów w określonych granicach.

Działa poza WordPress

Rdzeń oparty na bazie danych działa w każdym procesie PHP, który może otworzyć to samo połączenie z bazą danych. Dzięki temu inna aplikacja może wysyłać zadania, sygnały i odczytywać status przepływu pracy. Wyzwalacze akcji, most WP-Cron i polecenia WP-CLI nadal wymagają WordPress.

W porównaniu z

Jak Queuety ma się do programów planujących i silników przepływu pracy znanych już deweloperom WordPress.

Queuety w porównaniu z innymi narzędziami
WP-Cron Dobre wJest wbudowany w WordPress, więc nie wymaga dostępu do harmonogramu systemowego na hostingu współdzielonym. Zadanie, które nie uruchomi się o wyznaczonej porze, zostanie wykonane przy następnym załadowaniu strony, zamiast zostać pominięte. Różnica w porównaniu z QueuetyProcesy robocze Queuety działają niezależnie od ruchu w witrynie i wymagają długotrwałego procesu roboczego wp queuety work. Most WP-Cron zamienia cykliczne zdarzenia na harmonogramy, ale jeszcze nie wywołuje ich funkcji obsługi, dlatego nadal odpowiada za nie WP-Cron.
Action Scheduler Dobre wStworzony z myślą o dystrybucji wtyczek i motywów bez konieczności dostępu do serwera. Co miesiąc przetwarza miliony płatności za Subscriptions i webhooków dla WooCommerce, a każdą czynność rejestruje w interfejsie administracyjnym. Różnica w porównaniu z QueuetyAction Scheduler uruchamia funkcję obsługi w późniejszym czasie, podobnie jak opóźnione do_action(). Queuety dodaje wieloetapowe przepływy pracy ze stanem utrwalanym między krokami, oczekiwaniem na sygnały i zatwierdzenia oraz maszynami stanów. Możesz je przeglądać za pomocą poleceń WP-CLI, takich jak wp queuety workflow timeline.
Temporal Dobre wPlatforma trwałego wykonywania: dziennik historii zdarzeń zapisuje każdy krok przepływu pracy, dzięki czemu po awarii lub przerwie działanie wznawia się od ostatniego zarejestrowanego zdarzenia. Temporal Cloud jest oferowany jako alternatywa dla samodzielnego hostowania usługi. Różnica w porównaniu z QueuetyTemporal Service to serwer Go wraz z bazą danych, działający obok aplikacji. Queuety przechowuje swój stan w tabelach MySQL w połączeniu z bazą danych WordPress, a procesy robocze uruchamia za pośrednictwem WP-CLI.

Pytania i odpowiedzi

Krótkie odpowiedzi z dokumentacji Queuety.

Zainstaluj wtyczkę, uruchom proces roboczy i korzystaj z przewodników, od pierwszego zadania po przepływy pracy zatwierdzania i maszyny stanów.