Hoppa till innehåll

Queuety

Arbetsflödesmotorn WordPress.

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

Senaste versionen v0.22.0 GPL-2.0-or-later WordPress 6.4+, PHP 8.2+

I praktiken

Ett arbetsflöde definierat i PHP och arbetarens kommando som kör det.

Ett godkännandearbetsflöde

Arbetsflödet kör ett steg, väntar i 24 timmar och pausas sedan vid wait_for_approval() tills en annan process skickar signalen approval.

Fördröjningen lagras i databasen, så den överlever omstarter och driftsättningar av arbetaren. En signal som skickas i förväg registreras och hämtas när arbetsflödet når vänteläget. När körningen avbryts anropas hanteraren 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' ] );

Direkta MySQL-anspråk

Varje arbetare körs i en långlivad WP-CLI-process och hämtar jobb direkt från MySQL med FOR UPDATE SKIP LOCKED.

Beständiga arbetsflöden

Processer med flera steg och beständigt tillstånd som överlever PHP-tidsgränser, krascher och omförsök.

Tillståndsmaskiner

Långlivat, händelsestyrt tillstånd med Queuety::machine(): definiera tillstånd och övergångar, skicka händelser och läs tidslinjen.

Signaler och godkännanden

wait_for_signal(), wait_for_approval() och wait_for_input() pausar ett arbetsflöde tills extern indata kommer.

Prioritetsnivåer

Fyra nivåer från låg till brådskande. Inom en kö hämtas jobb med högre prioritet först.

Hastighetsbegränsning

Begränsningar per hanterare över ett glidande tidsfönster. En arbetare som hämtar ett hastighetsbegränsat jobb lägger tillbaka det och väntar.

Återkommande jobb

Schemaläggning baserad på intervall och cron. Inbyggd cron-parser utan externa beroenden.

Parallella steg

Kör arbetsflödessteg samtidigt och vänta tills alla är klara innan du går vidare.

Mätvärden och loggning

Permanent databaslogg med genomströmning, genomsnittlig varaktighet och p95-varaktighet samt felfrekvens per hanterare.

WP-Cron-reservlösning

Utan skalåtkomst kör en cron-händelse en engångsarbetare för standardkön en gång i minuten WordPress.

Mellanprogramvara

Jobb-mellanprogramvara i onion-stil för hastighetsbegränsningar, strypning av undantag, unikhet, tidsgränser och skydd mot överlappning.

PHP 8.2+

Uppräkningstyper, readonly-klasser, match-uttryck, konstruktörspromovering och PHP-attribut.

Varför Queuety

Tillståndet lagras i MySQL

Körader, arbetsflödestillstånd, loggar, signaler och strömmade delar lagras i MySQL, så en omstart av arbetaren innebär inte att något orkestreringstillstånd går förlorat. Vid varje steggräns sparas tillståndsuppdateringen, jobbets slutförande och nästa köläggning i en och samma transaktion.

Utanför sidförfrågan

WP-Cron körs bara vid sidbesök, och ett LLM-anrop på 60 sekunder avbryts av en tidsgräns på 30 sekunder för PHP. Queuety-arbetare körs i en långlivad WP-CLI-process och hämtar arbete utan att vänta på trafik.

Skyddsräcken för agentkörningar

for_each() med kvorumläge, godkännandesteg och begränsningar som max_transitions() och max_state_bytes() håller långa agentkörningar inom tydliga ramar.

Användbart utanför WordPress

Den databasbaserade kärnan körs i alla PHP-processer som kan ansluta till samma databas, så en annan app kan skicka jobb, skicka signaler och läsa arbetsflödesstatus. Åtgärdsutlösare, bryggan WP-Cron och kommandona WP-CLI kräver fortfarande WordPress.

Jämfört med

Så här förhåller sig Queuety till de schemaläggare och arbetsflödesmotorer som WordPress-utvecklare redan känner till.

Queuety jämfört med andra verktyg
WP-Cron Bra påDet är inbyggt i WordPress och kräver därför ingen åtkomst till systemets schemaläggare på delad hosting. En uppgift som missar sin tid körs vid nästa sidladdning i stället för att hoppas över. Skillnaden jämfört med QueuetyQueuety-arbetare körs oberoende av webbplatstrafiken och behöver en långlivad wp queuety work-process. Bryggan WP-Cron omvandlar återkommande händelser till scheman, men kör ännu inte deras hook-callbacks, så WP-Cron fortsätter att hantera dem.
Action Scheduler Bra påUtformat för distribution i tillägg och teman utan krav på serveråtkomst. Det behandlar miljontals betalningar för prenumerationer och webhooks för WooCommerce varje månad och loggar varje åtgärd i ett administratörsgränssnitt. Skillnaden jämfört med QueuetyAction Scheduler kör en hook vid ett senare tillfälle, till exempel en fördröjd do_action(). Queuety lägger till arbetsflöden med flera steg och tillstånd som bevaras mellan stegen, väntan på signaler och godkännanden samt tillståndsmaskiner. Du kan granska dem med kommandon som WP-CLI wp queuety workflow timeline.
Temporal Bra påEn plattform för beständig körning: en händelsehistorik registrerar varje steg i ett arbetsflöde, så en körning återupptas från den senast registrerade händelsen efter krascher eller avbrott. Temporal Cloud erbjuds som alternativ till att själv stå för driften av tjänsten. Skillnaden jämfört med QueuetyEn Temporal-tjänst är en Go-server med en databas som körs bredvid din applikation. Queuety lagrar sitt tillstånd i MySQL-tabeller via databasanslutningen WordPress och kör arbetare genom WP-CLI.

Frågor och svar

Korta svar från dokumentationen för Queuety.

Installera tillägget, starta en arbetare och följ guiderna från ditt första jobb till godkännandearbetsflöden och tillståndsmaskiner.