Munkafolyamat időutazása
A Queuety lehetővé teszi, hogy egy munkafolyamatot visszaállítson egy korábbi lépésre, és onnan folytassa a végrehajtást. Ez akkor hasznos, ha egy lépés hibás kimenetet adott, más konfigurációval szeretne újrapróbálkozni, vagy sérült adatokból kell helyreállnia a teljes munkafolyamat újraindítása nélkül.
A visszaállítás a Munkafolyamat eseménynaplójára támaszkodik. Az eseménynaplónak rendelkeznie kell state_after adattal a célként megadott lépéshez.
Munkafolyamat visszaállítása
PHP API
A visszaállításhoz hívja meg a Queuety::rewind_workflow() metódust a munkafolyamat azonosítójával és a lépés indexével:
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 );
A to_step paraméter annak a lépésnek a nullától kezdődő indexe, amelynek befejezett állapotát vissza kell állítani. A végrehajtás a következő lépésből folytatódik (to_step + 1).
CLI
wp queuety workflow rewind <id> <step>
| Beállítás | Leírás |
|---|---|
<id> |
Munkafolyamat-azonosító (kötelező) |
<step> |
Visszaállítási lépés indexe, 0-tól számozva (kötelező) |
wp queuety workflow rewind 42 1
Működés
Ha egy munkafolyamatot az N. lépésre állít vissza:
- Az eseménynapló lekéri az
state_afterértéket, amelyet az N. lépés befejezése után rögzített - Ha nincs pillanatkép,
RuntimeExceptionkivétel keletkezik - A munkafolyamat sora zárolásra kerül
- A munkafolyamat állapotát a pillanatkép váltja fel, megőrizve az aktuális munkafolyamat-sorból az összes fenntartott kulcsot (
_steps,_queue,_prioritystb.) - Az
current_stepértéke N + 1 lesz, azstatusértéke pedigrunning - Az összes
error_messageésfailed_atmező törlődik - Az N + 1 indexű lépés feldolgozási sorba kerül
- Rögzítésre kerül egy
workflow_rewoundnaplóesemény
Ezután a munkafolyamat-kezelő felveszi a sorba állított lépést, és a munkafolyamat ettől a ponttól a megszokott módon folytatódik.
Követelmények
A visszaállításhoz state_after adatokra van szükség az eseménynaplóban. Az eseménynapló minden step_completed eseménynél automatikusan rögzíti azokat. Ha az eseménynaplót ritkították (a WorkflowEventLog::prune() segítségével), és a célként megadott lépés állapota már nem létezik, a visszaállítás sikertelen lesz.
Gondoskodjon róla, hogy az eseménynapló megőrzési ideje lefedje azt az időszakot, amelyre vissza kellhet állnia.
Felhasználási esetek
Hibás lépéskezelő javítása
Ha egy lépéskezelő hibája miatt helytelen kimenet keletkezett, telepítheti a javítást, majd visszaállíthatja a munkafolyamatot:
// 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 );
Újrapróbálkozás más konfigurációval
Ha egy lépés külső tényezők (API sebességkorlátozás, hibás hitelesítő adatok) miatt hibázott, javítsa a konfigurációt, majd állítsa vissza a munkafolyamatot az újrafuttatáshoz:
// 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 );
Helyreállítás hibás adatokból
Ha egy korábbi lépés hibás adatokat írt az állapotba, állítsa vissza a munkafolyamatot egy ismert, helyes pillanatképre:
// 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 );
Összehasonlítás az újrapróbálkozással
| Szempont | retry_workflow() |
rewind_workflow() |
|---|---|---|
| Folytatás innen | A sikertelen lépés | Bármely korábbi lépés |
| Állapot | Aktuális munkafolyamat-állapot | Visszaállítva az eseménynapló state_after pillanatképéből |
| Követelmény | A munkafolyamat állapota failed |
Eseménynapló-pillanatkép a célként megadott lépésnél |
| Utólagos állapot | running |
running |
| Naplóesemény | nincs | workflow_rewound |