Cestovanie v čase v pracovnom postupe
Queuety dokáže vrátiť pracovný postup k predchádzajúcemu kroku a pokračovať vo vykonávaní od tohto bodu. Hodí sa to, keď krok vytvoril nesprávny výstup, keď ho chcete zopakovať s inou konfiguráciou alebo keď potrebujete obnoviť postup po poškodení dát bez opätovného spustenia celého pracovného postupu.
Vrátenie späť závisí od Denníka udalostí pracovného postupu. Denník udalostí musí obsahovať state_after údaje pre cieľový krok.
Vrátenie pracovného postupu späť
PHP API
Zavolajte Queuety::rewind_workflow() s ID pracovného postupu a indexom kroku, ku ktorému sa chcete vrátiť:
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 );
Parameter to_step je index začínajúci od 0 kroku, ktorého dokončený stav sa má obnoviť. Vykonávanie pokračuje od nasledujúceho kroku (to_step + 1).
CLI
wp queuety workflow rewind <id> <step>
| Možnosť | Popis |
|---|---|
<id> |
ID workflowu (povinné) |
<step> |
Index kroku, na ktorý sa chcete vrátiť, od 0 (povinné) |
wp queuety workflow rewind 42 1
Ako to funguje
Pri vrátení pracovného postupu ku kroku N:
- V denníku udalostí sa vyhľadá hodnota
state_afterzaznamenaná po dokončení kroku N - Ak neexistuje snímka stavu, vyhodí sa
RuntimeException - Riadok pracovného postupu sa uzamkne
- Stav pracovného postupu sa nahradí snímkou stavu, pričom sa zachovajú všetky rezervované kľúče (
_steps,_queue,_priorityatď.) z aktuálneho riadka pracovného postupu current_stepsa nastaví na N + 1 astatussa nastaví narunning- Všetky polia
error_messageafailed_atsa vymažú - Krok s indexom N + 1 sa zaradí do frontu na spracovanie
- Zaznamená sa udalosť denníka
workflow_rewound
Worker potom prevezme zaradený krok a pracovný postup od tohto bodu pokračuje ako zvyčajne.
Požiadavky
Vrátenie späť vyžaduje údaje state_after v denníku udalostí. Denník udalostí ich automaticky zaznamenáva pri každej udalosti step_completed. Ak bol denník udalostí skrátený (pomocou WorkflowEventLog::prune()) a stav cieľového kroku už neexistuje, vrátenie späť zlyhá.
Uistite sa, že doba uchovávania denníka udalostí pokrýva obdobie, ku ktorému sa možno budete potrebovať vrátiť.
Prípady použitia
Oprava chybného obslužného programu kroku
Ak mal obslužný program kroku chybu, ktorá spôsobila nesprávny výstup, môžete nasadiť opravu a vrátiť pracovný postup späť:
// 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 );
Opätovné spustenie s inou konfiguráciou
Ak krok zlyhal z externých dôvodov (obmedzenie počtu požiadaviek API, nesprávne prihlasovacie údaje), opravte konfiguráciu a spustite ho znova návratom späť:
// 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 );
Obnovenie po chybných dátach
Ak predchádzajúci krok vložil do stavu nesprávne údaje, vráťte sa k známej správnej snímke stavu:
// 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 );
Porovnanie s opakovaným pokusom
| Aspekt | retry_workflow() |
rewind_workflow() |
|---|---|---|
| Pokračuje od | Krok, ktorý zlyhal | Ľubovoľný predchádzajúci krok |
| Stav | Aktuálny stav pracovného postupu | Obnovený z denníka udalostí state_after |
| Vyžaduje | Pracovný postup má stav failed |
Snímku stavu cieľového kroku v denníku udalostí |
| Stav potom | running |
running |
| Udalosť denníka | žiadna | workflow_rewound |