Unerwartete Unterbrechung und automatische Wiederaufnahme
Was soll ich tun, wenn mein Arbeitsablauf auf halbem Weg unterbrochen wird? Ausgestattet mit Recovery und Idempotent können Sie den Download an Haltepunkten fortsetzen und wiederholte Nebenwirkungen vermeiden.
„Was tun, wenn der Lauf nicht auf einmal abgeschlossen wird?“ ist eine Frage, die der Workflow auf Produktionsebene beantworten muss. Braidrun bietet zwei Verarbeitungslösungen:
- Standard: sichere Pause — Markieren Sie die Ausführung als UNTERBROCHEN und warten Sie, bis Sie sie deutlich sehen, bevor Sie es ab einem bestimmten Schritt in der Mitte manuell erneut versuchen.
- Optional: Automatisch weiterlaufen lassen — Nachdem Sie explizit erklärt haben, dass „dieser Workflow fortgesetzt werden kann + welche Schritte idempotent sind“, fährt die Plattform automatisch ab dem Unterbrechungspunkt fort.
Zwei Kategorien:
- Plattformseitig – Dienst wird neu gestartet, Instanzen werden ersetzt, Host fällt aus. Diese versuchen wir zu vermeiden, jedoch nicht zu 100 %.
- Ihrerseits „stornieren“ Sie aktiv eine Ausführung (stoppen Sie bei CANCELLED, nicht INTERRUPTED).
Nur die erstere Kategorie tritt in den Prozess der „automatischen Fortsetzung“ ein und die Ausführung von CANCELLED wird nicht automatisch ausgeführt.
Standardverhalten: sichere Pause
Wenn ein plattformseitiger Interrupt auftritt, führt die Plattform Folgendes aus:
- Markieren Sie den Ausführungsstatus als UNTERBROCHEN;
- Bewahren Sie die Ergebnisse, Produkte und Protokolle aller abgeschlossenen Schritte auf;
- Sie erhalten eine Benachrichtigung vor Ort (E-Mail/Slack wird ebenfalls entsprechend Ihrer Benachrichtigung konfiguriert);
- Wenn Sie zur Seite mit den Ausführungsdetails gehen, können Sie „den fehlgeschlagenen Schritt erneut versuchen“ – die Plattform verwendet die Ergebnisse des vorherigen Schritts wieder.
Diese Standardeinstellung ist für alle Workflows verfügbar und erfordert keine Konfiguration. Geeignet für:
- Der Workflow enthält externe Nebenwirkungen (E-Mails senden/Geld abziehen/Datenbank ändern)
- Wenn die Produktion noch nicht sicher ist, „ob es sicher ist, neu zu starten und weiterzulaufen“
Optional: Automatisch weiterlaufen lassen
Wenn es sich bei Ihrem Workflow um eine reine Datenpipeline handelt (schreibgeschützte API + Berichtsgenerierung), können Sie die automatische Fortsetzung aktivieren. Nach einer Unterbrechung wird die Plattform automatisch ab dem Unterbrechungspunkt weiter ausgeführt, ohne dass Sie manuell klicken müssen.
Zweistufiges Opt-in aktiviert
Damit die automatische Fortsetzung wirksam wird, müssen Sie beide Ebenen in YAML deklarieren:
- Workflow-Ebene: Aussage
recovery.autoResumeOnRestart: true - Stufenstufe: Schritt-für-Schritt-Anleitung für sichere Wiederholungen
idempotent: true
Vollständiges Beispiel
name: daily-asa-digest
version: "1.0.0"
recovery:
autoResumeOnRestart: true
policy: RESUME_FROM_LAST_INCOMPLETE
maxAutoResumeAttempts: 3
steps:
- id: fetch_asa_data
type: sub_workflow
module: dingyue-module-asa-fetch
idempotent: true # 只读拉取,可重跑
- id: build_excel
type: sub_workflow
module: dingyue-module-excel-report
idempotent: true # 生成文件到产物目录,可重跑
- id: notify_team
type: sub_workflow
module: dingyue-module-slack-deliver
# 不写 idempotent —— 默认 false,发消息不可重跑Drei Wiederherstellungsrichtlinien
| policy | Bedeutung | Passend zur Szene |
|---|---|---|
ABORT | Eine nicht automatische Wiederherstellung ist gleichbedeutend mit der Rückkehr zum Standardverhalten. | Testphase |
RESUME_FROM_LAST_INCOMPLETE | Standard. Wiederholen Sie den Vorgang ab dem ersten, nicht ABGESCHLOSSENEN Schritt. | Datenpipelines, schreibgeschützte API-Aggregationen, reine Berechnung |
RESUME_FROM_START | Führen Sie den gesamten Workflow von Grund auf neu aus | Szenarien, in denen sich Datenquellen bei Ausfällen ändern können und aktualisiert werden müssen |
idempotent So Markieren Sie
Der Goldstandard zur Bestimmung, ob ein Schritt idempotent ist:
„Gibt es irgendwelche Nebenwirkungen, wenn dieselbe Eingabe zweimal ausgeführt wird?“
Wenn Sie können (externe Nachrichten senden, Geld verlangen, Bestellungen schreiben), fügen Sie nicht idempotent hinzu.
| Schritteigenschaften | idempotent |
|---|---|
| Schreibgeschützte API-Abfrage (Pull-Report, Listen-App) | ✓ true |
| Reine Berechnung/Datenkonvertierung | ✓ true |
| Generieren Sie Markdown/Excel zum Produktverzeichnis | ✓ true(Alte Produkte werden vor der erneuten Ausführung gelöscht) |
| LLM-Inferenz (nebenwirkungsfreies Tool) | ✓ true(Tokens werden neu berechnet, aber semantisch sicher) |
| E-Mail / Telegramm / Slack / Feishu senden | ✗ false |
| An externe Datenbank schreiben/Anzeigengebot ändern/Bestellung aufgeben/Abbuchung | ✗ false |
| Ausgehende Webhook-Anrufe | ✗ false(Es sei denn, der andere Endpunkt entfernt explizit Duplikate) |
| manual_approval | ✗ false(Wenn Sie den Lauf fortsetzen, wird der Genehmiger erneut angepingt, was eine schlechte Erfahrung darstellt.) |
Wenn idempotent nicht geschrieben ist, ist der Standardwert falsch. RESUME_FROM_LAST_INCOMPLETE wird auf ABORT heruntergestuft, wenn es auf einen nicht idempotenten Schritt stößt – es wird nicht automatisch ausgeführt, sondern Sie müssen es manuell ausführen.
Mehrere Situationen, die bei der automatischen Fortsetzung nicht auftreten
Auch wenn Sie die Wiederherstellung konfigurieren, werden die folgenden Ausführungen nicht automatisch weiter ausgeführt:
- Die Triggerquelle ist ein Webhook – die Webhook-Nutzlast kann höchstens einmal sein und die Plattform weiß nicht, ob der Upstream es erneut versuchen wird.
- Die Triggerquelle ist der Scheduler – der Scheduler wird sich in der nächsten Cron-Runde selbst neu starten.
- Derzeit bei „manual_approval“ gestoppt – Warten auf Genehmigung bedeutet, dass es ursprünglich blockiert ist.
- Die Workflow-Definitionsdatei wurde während des Ausfalls geändert – die Plattform hat eine Hash-Inkonsistenz festgestellt und ist sich nicht sicher, ob die neue Version kompatibel ist.
Handbuch „Ab einem Schritt erneut versuchen“ (jederzeit verfügbar)
Unabhängig davon, ob der Workflow mit Wiederherstellung konfiguriert ist oder nicht, bietet die Seite mit den Ausführungsdetails immer die Schaltfläche „Wiederholen bei fehlgeschlagenem Schritt“:
- Öffnen Sie eine UNTERBROCHENE/FEHLGESCHLAGENE Ausführung;
- Klicken Sie neben dem fehlgeschlagenen/unterbrochenen Schritt auf „Von diesem Schritt an erneut versuchen“.
- Das Ergebnis des zuvor abgeschlossenen Schritts wird wiederverwendet; Dieser Schritt beginnt erneut zu laufen.
Selbst wenn der Schritt nicht idempotent ist, können Sie ihn manuell wiederholen – denn dann entscheiden Sie als Mensch bewusst, dass es sich lohnt, ihn erneut auszuführen.
Weiterlauflimit
Verhindern Sie, dass das System dieselbe Ausführung in einer „Endlosschleife“ neu startet: Jede Ausführung wird automatisch bis zu dreimal weiter ausgeführt. Wenn es immer noch fehlschlägt, halten Sie inne und warten Sie, bis Sie das Problem behoben haben. Sie können (1–20) in „recovery.maxAutoResumeAttempts“ überschreiben.
Prüfung
Audit-Ereignisse werden jedes Mal aufgezeichnet, wenn eine automatische Fortsetzung durchgeführt wird:
execution.auto_resume— Läuft erfolgreich weiterexecution.auto_resume.skipped— Nach den Regeln sollte man aus gutem Grund nicht weiterlaufen
Der Administrator kann die Überwachungsprotokolle nach diesen beiden Ereignistypen filtern und anzeigen.
Praktische Vorschläge
- Reine Datenpipeline (ASA Daily, RSS-Zusammenfassung): vollständige Wiederherstellung + idempotent, seien Sie versichert, dass sie automatisch weiterläuft.
- Bei externen Nebenwirkungen (Abzüge, Senden von Nachrichten, Aufgeben von Bestellungen): Öffnen Sie die automatische Wiederaufnahme nicht. Unterbrechen der menschlichen Entscheidungsfindung.
- Fügen Sie „manual_approval“ vor den wichtigsten Nebeneffektschritten hinzu – die Genehmigung selbst ist ein „natürlicher Blockierungspunkt“ für den diskontinuierlichen Betrieb.
Nächster Schritt
- Ausführungsüberwachung und Protokollierung — So zeigen Sie die Ausführung im UNTERBROCHEN-Status an
- Best Practices — Umfassende Vorschläge zur idempotenten Annotation/Aufteilung/Modularisierung