Ταξίδι στον χρόνο στις ροές εργασιών
Το Queuety μπορεί να επαναφέρει μια ροή εργασιών σε προηγούμενο βήμα και να συνεχίσει την εκτέλεση από εκείνο το σημείο. Αυτό είναι χρήσιμο όταν ένα βήμα παρήγαγε λανθασμένο αποτέλεσμα, όταν θέλετε να δοκιμάσετε ξανά με διαφορετικές ρυθμίσεις ή όταν χρειάζεται να ανακτήσετε δεδομένα που έχουν αλλοιωθεί χωρίς να επανεκκινήσετε ολόκληρη τη ροή εργασιών.
Η επαναφορά βασίζεται στο Αρχείο καταγραφής συμβάντων ροής εργασιών. Το αρχείο καταγραφής συμβάντων πρέπει να περιέχει δεδομένα state_after για το βήμα-στόχο.
Επαναφορά ροής εργασιών
PHP API
Καλέστε το Queuety::rewind_workflow() με το ID της ροής εργασιών και τον δείκτη βήματος στο οποίο θέλετε να επιστρέψετε:
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 );
Η παράμετρος to_step είναι ο δείκτης με αρίθμηση από το 0 του βήματος του οποίου πρέπει να αποκατασταθεί η ολοκληρωμένη κατάσταση. Η εκτέλεση συνεχίζεται από το επόμενο βήμα (to_step + 1).
CLI
wp queuety workflow rewind <id> <step>
| Επιλογή | Περιγραφή |
|---|---|
<id> |
Αναγνωριστικό ροής εργασιών (απαιτείται) |
<step> |
Δείκτης βήματος στο οποίο θα γίνει επαναφορά, με αρίθμηση από το 0 (απαιτείται) |
wp queuety workflow rewind 42 1
Πώς λειτουργεί
Όταν επαναφέρετε μια ροή εργασιών στο βήμα N:
- Αναζητείται στο αρχείο καταγραφής συμβάντων η τιμή
state_afterπου καταγράφηκε μετά την ολοκλήρωση του βήματος N - Αν δεν υπάρχει στιγμιότυπο, προκαλείται
RuntimeException - Η γραμμή της ροής εργασίας κλειδώνεται
- Η κατάσταση της ροής εργασίας αντικαθίσταται από το στιγμιότυπο, διατηρώντας όλα τα δεσμευμένα κλειδιά (
_steps,_queue,_priorityκ.λπ.) από την τρέχουσα γραμμή της ροής εργασίας - Το
current_stepορίζεται σε N + 1 και τοstatusορίζεται σεrunning - Τα πεδία
error_messageκαιfailed_atδιαγράφονται - Το βήμα με δείκτη N + 1 τίθεται στην ουρά για επεξεργασία
- Καταγράφεται ένα συμβάν
workflow_rewound
Στη συνέχεια, ο worker αναλαμβάνει το βήμα που τέθηκε στην ουρά και η ροή εργασίας συνεχίζεται κανονικά από εκείνο το σημείο.
Απαιτήσεις
Η επαναφορά απαιτεί δεδομένα state_after στο αρχείο καταγραφής συμβάντων. Το αρχείο καταγράφει αυτόματα αυτά τα δεδομένα για κάθε συμβάν step_completed. Αν το αρχείο καταγραφής συμβάντων έχει εκκαθαριστεί (μέσω του WorkflowEventLog::prune()) και η κατάσταση για το βήμα-στόχο δεν υπάρχει πλέον, η επαναφορά θα αποτύχει.
Βεβαιωθείτε ότι η διατήρηση του αρχείου καταγραφής συμβάντων καλύπτει την περίοδο στην οποία ενδέχεται να χρειαστεί να επαναφέρετε τη ροή.
Περιπτώσεις χρήσης
Διόρθωση προβληματικού χειριστή βήματος
Αν ένας χειριστής βήματος είχε σφάλμα που παρήγαγε λανθασμένο αποτέλεσμα, μπορείτε να αναπτύξετε τη διόρθωση και να επαναφέρετε τη ροή:
// 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 );
Επανάληψη με διαφορετικές ρυθμίσεις
Όταν ένα βήμα απέτυχε λόγω εξωτερικών παραγόντων (API περιορισμός ρυθμού, λανθασμένα διαπιστευτήρια), διορθώστε τις ρυθμίσεις και επαναφέρετε τη ροή για να εκτελεστεί ξανά:
// 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 );
Ανάκτηση από λανθασμένα δεδομένα
Αν ένα προηγούμενο βήμα εισήγαγε λανθασμένα δεδομένα στην κατάσταση, επαναφέρετε τη ροή σε ένα γνωστό σωστό στιγμιότυπο:
// 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 );
Σύγκριση με την επανάληψη
| Πτυχή | retry_workflow() |
rewind_workflow() |
|---|---|---|
| Συνέχιση από | Το βήμα που απέτυχε | Οποιοδήποτε προηγούμενο βήμα |
| Κατάσταση | Τρέχουσα κατάσταση ροής εργασίας | Επαναφορά από το αρχείο καταγραφής συμβάντων state_after |
| Απαιτείται | Η ροή εργασίας να έχει κατάσταση failed |
Στιγμιότυπο αρχείου συμβάντων στο βήμα-στόχο |
| Κατάσταση μετά | running |
running |
| Συμβάν καταγραφής | κανένα | workflow_rewound |