İş Akışında Zamanda Yolculuk
Queuety, bir iş akışını önceki bir adıma geri sarıp yürütmeyi o noktadan sürdürmenizi sağlar. Bir adım hatalı çıktı ürettiğinde, farklı bir yapılandırmayla yeniden denemek istediğinizde veya tüm iş akışını baştan başlatmadan bozuk verileri kurtarmanız gerektiğinde kullanışlıdır.
Geri sarma, İş Akışı Olay Günlüğü özelliğine bağlıdır. Hedef adım için olay günlüğünde state_after verileri bulunmalıdır.
İş akışını geri sarma
PHP API
Geri sarılacak iş akışı kimliği ve adım diziniyle Queuety::rewind_workflow() çağrısını yapın:
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 parametresi, tamamlanmış durumu geri yüklenecek adımın sıfır tabanlı dizinidir. Yürütme sonraki adımdan (to_step + 1) devam eder.
CLI
wp queuety workflow rewind <id> <step>
| Seçenek | Açıklama |
|---|---|
<id> |
İş akışı kimliği (gerekli) |
<step> |
Geri sarılacak adım dizini, 0 tabanlı (gerekli) |
wp queuety workflow rewind 42 1
Nasıl çalışır
Bir iş akışını N. adıma geri sardığınızda:
- Olay günlüğünde, N. adım tamamlandıktan sonra kaydedilen
state_afterdeğeri sorgulanır - Anlık görüntü yoksa
RuntimeExceptionfırlatılır - İş akışı satırı kilitlenir
- İş akışı durumu, mevcut iş akışı satırındaki ayrılmış tüm anahtarlar (
_steps,_queue,_priorityvb.) korunarak anlık görüntüyle değiştirilir current_stepN + 1 olarak,statusiserunningolarak ayarlanırerror_messagevefailed_atalanları temizlenir- N + 1 dizinindeki adım işlenmek üzere kuyruğa alınır
- Bir
workflow_rewoundgünlük olayı kaydedilir
Ardından çalışan, kuyruğa alınan adımı işler ve iş akışı bu noktadan itibaren normal şekilde devam eder.
Gereksinimler
Geri sarma, olay günlüğünde state_after verisinin bulunmasını gerektirir. Olay günlüğü bunu her step_completed olayı için otomatik olarak kaydeder. Olay günlüğü budanmışsa (WorkflowEventLog::prune() aracılığıyla) ve hedef adımın durumu artık mevcut değilse geri sarma başarısız olur.
Olay günlüğü saklama süresinin, geri sarmaya ihtiyaç duyabileceğiniz dönemi kapsadığından emin olun.
Kullanım alanları
Hatalı bir adım işleyicisini düzeltme
Bir adım işleyicisindeki hata yanlış çıktı ürettiyse düzeltmeyi dağıtıp geri sarabilirsiniz:
// 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 );
Farklı yapılandırmayla yeniden deneme
Bir adım harici etkenler (API hız sınırı, hatalı kimlik bilgileri) nedeniyle başarısız olduğunda, yapılandırmayı düzeltip yeniden çalıştırmak için geri sarın:
// 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 );
Hatalı verilerden kurtarma
Önceki bir adım duruma hatalı veri eklediyse bilinen iyi bir anlık görüntüye geri sarın:
// 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 );
Yeniden denemeyle karşılaştırma
| Özellik | retry_workflow() |
rewind_workflow() |
|---|---|---|
| Nereden devam eder | Başarısız adım | Önceki herhangi bir adım |
| Durum | Mevcut iş akışı durumu | Olay günlüğünden geri yüklenir state_after |
| Gereksinim | İş akışının durumu failed olmalı |
Hedef adımda olay günlüğü anlık görüntüsü |
| Sonraki durum | running |
running |
| Günlük olayı | yok | workflow_rewound |