Liigu sisu juurde

Töövoo ajas tagasi kerimine

Queuety saab töövoo tagasi eelmise sammuni kerida ja jätkata täitmist sellest punktist. See on kasulik, kui samm andis halva väljundi, kui soovite uuesti proovida teistsuguse seadistusega või kui peate rikutud andmed taastama kogu töövoogu uuesti käivitamata.

Tagasikerimine tugineb Töövoo sündmuslogile. Sündmuslogis peavad sihtsammu kohta olema state_after andmed.

Töövoo tagasikerimine

PHP API

Kutsuge välja Queuety::rewind_workflow(), edastades töövoo ID ja sammu indeksi, milleni tagasi kerida:

PHP
use Queuety\Queuety;

// Rewind workflow 42 to step 1.
// The state is restored to the snapshot taken after step 1 completed,
// and step 2 is enqueued for re-execution.
Queuety::rewind_workflow( $workflow_id, to_step: 1 );

Parameeter to_step on selle sammu nullpõhine indeks, mille lõpetatud olek tuleb taastada. Täitmine jätkub järgmisest sammust (to_step + 1).

CLI

Shell
wp queuety workflow rewind <id> <step>
Suvand Kirjeldus
<id> Töövoo ID (nõutav)
<step> Samm, milleni tagasi kerida, alates 0-st (nõutav)
Shell
wp queuety workflow rewind 42 1

Kuidas see töötab

Kui kerite töövoo tagasi sammuni N:

  1. Sündmuste logist küsitakse pärast sammu N lõpuleviimist salvestatud väärtust state_after
  2. Kui hetktõmmist pole, visatakse RuntimeException
  3. Töövoo rida lukustatakse
  4. Töövoo olek asendatakse hetktõmmisega, säilitades praeguse töövoo rea kõik reserveeritud võtmed (_steps, _queue, _priority jne)
  5. current_step väärtuseks määratakse N + 1 ja status väärtuseks running
  6. Kõik väljad error_message ja failed_at tühjendatakse
  7. Indeksis N + 1 olev samm lisatakse töötlemisjärjekorda
  8. Salvestatakse logisündmus workflow_rewound

Seejärel võtab töötaja järjekorda lisatud sammu ette ja töövoog jätkub sellest punktist tavapäraselt.

Nõuded

Tagasikerimiseks on sündmuste logis vaja andmeid state_after. Logi salvestab need automaatselt iga sündmuse step_completed puhul. Kui sündmuste logi on kärbitud (käsuga WorkflowEventLog::prune()) ja sihtsammu olekut enam pole, siis tagasikerimine nurjub.

Veenduge, et sündmuste logi säilitusaeg kataks perioodi, milleni võib olla vaja tagasi kerida.

Kasutusjuhud

Vigase sammutöötleja parandamine

Kui sammutöötlejas oli viga, mille tõttu see andis vale väljundi, saate paranduse juurutada ja tagasi kerida:

PHP
// Step 2 (CallLLMHandler) produced garbled output due to a prompt bug.
// After fixing CallLLMHandler, rewind to step 1 so step 2 runs again
// with the corrected handler.
Queuety::rewind_workflow( $workflow_id, to_step: 1 );

Uuesti proovimine teistsuguse konfiguratsiooniga

Kui samm nurjus väliste tegurite tõttu (API kiiruspiirang, valed identimisteabe andmed), parandage konfiguratsioon ja käivitage samm tagasikerimisega uuesti:

PHP
// Step 3 failed because the API key was expired.
// After updating the key, rewind to step 2 so step 3 retries.
Queuety::rewind_workflow( $workflow_id, to_step: 2 );

Vigastest andmetest taastamine

Kui varasem samm lisas olekusse vigaseid andmeid, kerige tagasi teadaolevalt korras hetktõmmiseni:

PHP
// Step 0 fetched correct data, but step 1 corrupted it.
// Rewind to step 0 to restore the good state and re-run step 1.
Queuety::rewind_workflow( $workflow_id, to_step: 0 );

Võrdlus uuesti proovimisega

Aspekt retry_workflow() rewind_workflow()
Jätkab alates Nurjunud sammust Mis tahes varasemast sammust
Olek Praegune töövoo olek Taastatakse sündmuste logi state_after põhjal
Eeldus Töövoo olek on failed Sihtsammu hetktõmmis on sündmuste logis olemas
Olek pärast toimingut running running
Logisündmus puudub workflow_rewound