Pereiti prie turinio

Queuety

WordPress darbo eigos variklis.

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

Naujausia versija v0.22.0 GPL-2.0-or-later WordPress 6.4+, PHP 8.2+

Praktinis pritaikymas

Darbo eiga, apibrėžta PHP, ir ją vykdanti darbinio proceso komanda.

Patvirtinimo darbo eiga

Darbo eiga atlieka žingsnį, laukia 24 valandas, tada pristabdoma ties wait_for_approval(), kol kitas procesas atsiunčia signalą approval.

Delsa saugoma duomenų bazėje, todėl išlieka iš naujo paleidus darbinius procesus ir įdiegus naują versiją. Per anksti išsiųstas signalas įrašomas ir apdorojamas darbo eigai pasiekus laukimo būseną. Atšaukus vykdymą, iškviečiamas apdorojimo įrankis 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' ] );

Tiesioginės MySQL užklausos

Kiekvienas darbinis procesas veikia ilgai veikiančiame WP-CLI procese ir tiesiogiai pasiima užduotis iš MySQL, naudodamas FOR UPDATE SKIP LOCKED.

Patikimos darbo eigos

Kelių žingsnių procesai su išsaugoma būsena, kuri išlieka po PHP skirtųjų laikų pabaigos, gedimų ir pakartotinių bandymų.

Būsenų automatai

Ilgai veikianti, įvykiais grindžiama būsena su Queuety::machine(): apibrėžkite būsenas ir perėjimus, siųskite įvykius, peržiūrėkite laiko juostą.

Signalai ir patvirtinimai

wait_for_signal(), wait_for_approval() ir wait_for_input() pristabdo darbo eigą, kol gaunama išorinė įvestis.

Prioriteto lygiai

Keturi lygiai nuo žemo iki skubaus. Eilėje pirmiausia paimamos aukštesnio prioriteto užduotys.

Spartos ribojimas

Kiekvieno apdorojimo įrankio apribojimai slenkančiame laikotarpyje. Darbinis procesas, paėmęs ribojamą užduotį, grąžina ją į eilę ir laukia.

Pasikartojančios užduotys

Planavimas pagal intervalus ir cron. Įtaisytasis cron analizatorius be išorinių priklausomybių.

Lygiagretūs veiksmai

Vykdykite darbo eigos žingsnius vienu metu ir prieš tęsdami palaukite, kol visi bus užbaigti.

Metrikos ir žurnalai

Nuolatinis duomenų bazės žurnalas, kuriame pateikiamas kiekvieno apdorojimo įrankio našumas, vidutinė ir p95 trukmė bei klaidų dažnis.

WP-Cron atsarginis veikimas

Neturint prieigos prie apvalkalo, kartą per minutę vykstantis WordPress cron įvykis paleidžia vienkartinį numatytosios eilės darbinį procesą.

Tarpinė programinė įranga

Sluoksniuota užduočių tarpinė programinė įranga, skirta dažnio apribojimams, išimčių ribojimui, unikalumui, skirties laikams ir persidengimo prevencijai.

PHP 8.2+

Enum tipai, tik skaitymui skirtos klasės, match išraiškos, konstruktoriaus savybių deklaravimas ir PHP atributai.

Kodėl Queuety

Būsena saugoma MySQL

Užduočių eilės įrašai, darbo eigos būsena, žurnalai, signalai ir srautiniu būdu perduodamos dalys saugomos MySQL, todėl iš naujo paleidus darbinį procesą neprarandama jokia orkestravimo būsena. Kiekvieno žingsnio riboje vienoje operacijoje įrašomas būsenos naujinimas, užduoties užbaigimas ir kitos užduoties įtraukimas į eilę.

Už puslapio užklausos ribų

WP-Cron suveikia tik aplankius puslapį, o 60 sekundžių trunkantį LLM iškvietimą nutraukia 30 sekundžių PHP skirtasis laikas. Queuety darbiniai procesai veikia ilgai WP-CLI procese ir apdoroja užduotis nelaukdami lankytojų srauto.

Apsaugos priemonės agentų vykdymui

for_each() su kvorumo režimu, patvirtinimo ribomis ir tokiais apribojimais kaip max_transitions() bei max_state_bytes() neleidžia ilgai trunkantiems agentų vykdymams peržengti nustatytų ribų.

Galima naudoti ir už WordPress ribų

Duomenų baze grindžiamas pagrindas veikia bet kuriame PHP procese, galinčiame prisijungti prie tos pačios duomenų bazės, todėl kita programa gali paleisti užduotis, siųsti signalus ir peržiūrėti darbo eigos būseną. Veiksmų paleidikliams, WP-Cron sąsajai ir WP-CLI komandoms vis dar reikia WordPress.

Palyginimas su

Kaip Queuety siejasi su planuokliais ir darbo eigos varikliais, kuriuos WordPress kūrėjai jau žino.

Queuety palyginimas su kitais įrankiais
WP-Cron Stipriosios pusėsĮtraukta į WordPress, todėl bendrojo prieglobos aplinkoje nereikia prieigos prie sistemos planuoklio. Jei užduoties laikas praleidžiamas, ji vykdoma kitą kartą įkėlus puslapį, o ne atmetama. Skirtumas nuo QueuetyQueuety darbiniai procesai veikia nepriklausomai nuo svetainės srauto, jiems reikia ilgai veikiančio wp queuety work proceso. WP-Cron sąsaja pasikartojančius įvykius paverčia tvarkaraščiais, tačiau jų kablių iškvietimų dar nevykdo, todėl juos ir toliau tvarko WP-Cron.
Action Scheduler Stipriosios pusėsSukurta platinti papildiniuose ir temose, nereikalaujant prieigos prie serverio. Kas mėnesį apdoroja milijonus mokėjimų, skirtų prenumeratoms, ir WooCommerce žiniatinklio kablius bei registruoja kiekvieną veiksmą administravimo sąsajoje. Skirtumas nuo QueuetyAction Scheduler vėliau iškviečia kablį, pavyzdžiui, uždelstą do_action(). Queuety siūlo kelių žingsnių darbo eigas, kurių būsena išsaugoma tarp žingsnių, laukimą signalų ir patvirtinimų bei būsenų automatus. Juos galima tikrinti naudojant WP-CLI komandas, pavyzdžiui, wp queuety workflow timeline.
Temporal Stipriosios pusėsPatikima vykdymo platforma: įvykių istorijoje įrašomas kiekvienas darbo eigos žingsnis, todėl po gedimų ar veiklos sutrikimų vykdymas tęsiamas nuo paskutinio užregistruoto įvykio. Temporal Cloud galima rinktis kaip alternatyvą paslaugos prieglobai savo serveryje. Skirtumas nuo QueuetyTemporal Service yra Go serveris ir duomenų bazė, veikiantys greta jūsų programos. Queuety saugo būseną WordPress duomenų bazės ryšio MySQL lentelėse ir darbinius procesus vykdo per WP-CLI.

Klausimai ir atsakymai

Trumpi atsakymai iš Queuety dokumentacijos.

Įdiekite papildinį, paleiskite darbinį procesą ir vadovaukitės vadovais – nuo pirmosios užduoties iki patvirtinimo darbo eigų ir būsenų automatų.