Gå til indhold

Queuety

WordPress-workflowmotoren.

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

Seneste udgivelse v0.22.0 GPL-2.0-or-later WordPress 6.4+, PHP 8.2+

I praksis

Et workflow defineret i PHP og worker-kommandoen, der kører det.

Et godkendelsesworkflow

Workflowet udfører et trin, venter 24 timer og sættes derefter på pause ved wait_for_approval(), indtil en anden proces sender signalet approval.

Forsinkelsen gemmes i databasen, så den overlever genstart af workeren og udrulninger, og et signal, der sendes tidligt, registreres og opfanges, når workflowet når ventepunktet. Hvis kørslen annulleres, kaldes handleren 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' ] );

Direkte MySQL-krav

Hver worker kører som en langvarig WP-CLI-proces og henter jobs direkte fra MySQL med FOR UPDATE SKIP LOCKED.

Robuste workflows

Processer med flere trin og vedvarende tilstand, der overlever PHP-timeouts, nedbrud og nye forsøg.

Tilstandsmaskiner

Langvarig, hændelsesdrevet tilstand med Queuety::machine(): definér tilstande og overgange, send hændelser, og læs tidslinjen.

Signaler og godkendelser

wait_for_signal(), wait_for_approval() og wait_for_input() sætter et workflow på pause, indtil der modtages eksternt input.

Prioritetsniveauer

Fire niveauer fra lav til akut. I en kø hentes jobs med højere prioritet først.

Hastighedsbegrænsning

Grænser pr. handler over et glidende tidsvindue. En worker, der henter et hastighedsbegrænset job, lægger det tilbage og venter.

Tilbagevendende jobs

Planlægning baseret på intervaller og cron. Indbygget cron-parser uden eksterne afhængigheder.

Parallelle trin

Kør workflowtrin samtidigt, og vent på, at alle er færdige, før du fortsætter.

Målinger og logning

En permanent databaselog med gennemløb, gennemsnitlig varighed og p95-varighed samt fejlfrekvens pr. handler.

WP-Cron-reservefunktion

Uden shelladgang starter en WordPress-cron-hændelse én gang i minuttet en engangs-worker for standardkøen.

Middleware

Onion-lignende job-middleware til hastighedsbegrænsninger, begrænsning af undtagelser, entydighed, timeouts og beskyttelse mod overlap.

PHP 8.2+

Enums, skrivebeskyttede klasser, match-udtryk, konstruktørpromovering og attributter i PHP.

Hvorfor Queuety

Tilstanden ligger i MySQL

Kørækker, workflowtilstand, logfiler, signaler og streamede chunks gemmes i MySQL, så en genstart af workeren ikke medfører tab af orkestreringstilstand. Ved hvert trinsskift gemmes tilstandsopdateringen, jobafslutningen og den næste køplacering i én transaktion.

Uden for sideanmodningen

WP-Cron kører kun ved sidebesøg, og et 60 sekunders LLM-kald afbrydes af en timeout på 30 sekunder i PHP. Queuety-workere kører i en langvarig WP-CLI-proces og tager fat på arbejdet uden at vente på trafik.

Sikkerhedsrammer for agentkørsler

for_each() med en kvorumtilstand, godkendelsesporte og grænser som max_transitions() og max_state_bytes() holder lange agentkørsler inden for fastlagte rammer.

Kan bruges uden for WordPress

Den databasebaserede kerne kører i enhver PHP-proces, der kan oprette forbindelse til den samme database, så en anden app kan starte jobs, sende signaler og læse workflowstatus. Handlingsudløsere, WP-Cron-broen og kommandoerne WP-CLI kræver stadig WordPress.

Sammenlignet med

Sådan hænger Queuety sammen med de planlæggere og workflowmotorer, som WordPress-udviklere allerede kender.

Queuety sammenlignet med andre værktøjer
WP-Cron God tilIndbygget i WordPress kræver det ikke adgang til systemets planlægger på delt hosting, og en opgave, der overskrider sin planlagte tid, køres ved næste sideindlæsning i stedet for at blive droppet. Forskel fra QueuetyQueuety-workere kører uafhængigt af trafikken på webstedet og kræver en langvarigt kørende wp queuety work-proces. Dets WP-Cron-bro omsætter tilbagevendende hændelser til tidsplaner, men kører endnu ikke deres hook-callbacks, så WP-Cron står fortsat for dem.
Action Scheduler God tilUdviklet til distribution i plugins og temaer uden behov for serveradgang. Det behandler hver måned millioner af betalinger for Subscriptions og webhooks for WooCommerce og logger alle handlinger i en administrationsgrænseflade. Forskel fra QueuetyAction Scheduler kører et hook på et senere tidspunkt, som en forsinket do_action(). Queuety tilføjer workflows med flere trin, hvor tilstanden bevares mellem trinnene, ventepunkter for signaler og godkendelser samt tilstandsmaskiner. Du kan undersøge dem med WP-CLI-kommandoer som wp queuety workflow timeline.
Temporal God tilEn platform til robust eksekvering: En hændelseshistorik registrerer hvert trin i et workflow, så en kørsel kan fortsætte fra den senest registrerede hændelse efter nedbrud eller afbrydelser. Temporal Cloud tilbydes som et alternativ til selv at hoste tjenesten. Forskel fra QueuetyEn Temporal-tjeneste er en Go-server plus en database, der kører ved siden af din applikation. Queuety gemmer sin tilstand i MySQL-tabeller på databaseforbindelsen WordPress og kører workere gennem WP-CLI.

Spørgsmål og svar

Korte svar fra Queuety-dokumentationen.

Installer pluginnet, start en worker, og følg vejledningerne fra dit første job til godkendelsesforløb og tilstandsmaskiner.