Zum Hauptinhalt springen
DokumentLaufenAutomatische Fortsetzung

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.
Was bedeutet unterbrechen?

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:

  1. Markieren Sie den Ausführungsstatus als UNTERBROCHEN;
  2. Bewahren Sie die Ergebnisse, Produkte und Protokolle aller abgeschlossenen Schritte auf;
  3. Sie erhalten eine Benachrichtigung vor Ort (E-Mail/Slack wird ebenfalls entsprechend Ihrer Benachrichtigung konfiguriert);
  4. 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:

  1. Workflow-Ebene: Aussage recovery.autoResumeOnRestart: true
  2. Stufenstufe: Schritt-für-Schritt-Anleitung für sichere Wiederholungen idempotent: true

Vollständiges Beispiel

yaml
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

policyBedeutungPassend zur Szene
ABORTEine nicht automatische Wiederherstellung ist gleichbedeutend mit der Rückkehr zum Standardverhalten.Testphase
RESUME_FROM_LAST_INCOMPLETEStandard. Wiederholen Sie den Vorgang ab dem ersten, nicht ABGESCHLOSSENEN Schritt.Datenpipelines, schreibgeschützte API-Aggregationen, reine Berechnung
RESUME_FROM_STARTFühren Sie den gesamten Workflow von Grund auf neu ausSzenarien, 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.

Schritteigenschaftenidempotent
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.)
Der Standardwert ist „false“ – Sicherheit geht vor

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

  1. Öffnen Sie eine UNTERBROCHENE/FEHLGESCHLAGENE Ausführung;
  2. Klicken Sie neben dem fehlgeschlagenen/unterbrochenen Schritt auf „Von diesem Schritt an erneut versuchen“.
  3. 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 weiter
  • execution.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