Ugrás a tartalomhoz

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:

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 );

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

Shell
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ő)
Shell
wp queuety workflow rewind 42 1

Működés

Ha egy munkafolyamatot az N. lépésre állít vissza:

  1. Az eseménynapló lekéri az state_after értéket, amelyet az N. lépés befejezése után rögzített
  2. Ha nincs pillanatkép, RuntimeException kivétel keletkezik
  3. A munkafolyamat sora zárolásra kerül
  4. A munkafolyamat állapotát a pillanatkép váltja fel, megőrizve az aktuális munkafolyamat-sorból az összes fenntartott kulcsot (_steps, _queue, _priority stb.)
  5. Az current_step értéke N + 1 lesz, az status értéke pedig running
  6. Az összes error_message és failed_at mező törlődik
  7. Az N + 1 indexű lépés feldolgozási sorba kerül
  8. Rögzítésre kerül egy workflow_rewound napló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:

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 );

Ú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:

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 );

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:

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 );

Ö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