Wenn die Schnittstelle einen Fehler meldet, versuchen Sie es erneut? Dokumentationsaufgaben sollten zunächst unterscheiden, welche Fehler behoben werden können

Es kommt sehr häufig vor, dass man es erneut versucht, nachdem man einen Fehler gemeldet hat. Wenn Sie es nach der Meldung eines Fehlers immer wieder versuchen, verstärken sich geringfügige Fehler. Berechtigungsfehler, Kontoausfälle, beschädigte Dateien und vorübergehend ausgelastete Dienste sollten nicht demselben Wiederholungspfad folgen. Entscheiden Sie nach der Kategorisierung, wie lange Sie warten möchten, wie oft Sie es höchstens versuchen möchten und ob ein Benutzereingriff erforderlich ist.

– Der Server hat möglicherweise bereits eine Aufgabe erstellt, als der POST abläuft. Blindes erneutes Senden ohne idempotente Schlüssel oder Abfragemechanismen führt zu doppelten Aufgaben.

  • Im Beispiel sind nur vorübergehende Fehler auf 1, 2 und 4 Sekunden begrenzt, um sie zu beheben. Wenn die Anzahl überschritten wird, wird der Vorgang abgebrochen und sollte nicht auf unbestimmte Zeit wiederholt werden.
  • Ungültige Berechtigungen, Kontorückstände und Eingabefehler sollten zu einer erneuten Autorisierung, zur Einstellung der Meldung bzw. zur Reparatur durch Benutzer führen.
  • Logische Aufgaben und Versuchsaufzeichnungen sollten unterschieden werden, und es sollte nur ein akzeptiertes Ergebnis verwendet werden, um eine Fehlberechnung der Anzahl der Versuche als Anzahl der Anfragen zu vermeiden.

Es ist gängige Praxis, es erneut zu versuchen, nachdem ein Fehler gemeldet wurde. Wenn Sie es jedoch wahllos auf unbestimmte Zeit erneut versuchen, können die Störungen verstärkt werden. Berechtigungsfehler, Kontoausfälle, beschädigte Dateien und vorübergehend ausgelastete Dienste sollten unterschiedlich gehandhabt werden.

Dieser Artikel eignet sich für Entwickler und Produktstudenten, die asynchrone Aufgaben wie Dokumentübersetzung und -konvertierung ausführen. Nachdem Sie dies gelesen haben, können Sie zunächst die Fehler kategorisieren und dann entscheiden, wie lange Sie warten möchten, wie viele Versuche maximal sind und wann ein Benutzereingriff erforderlich ist.

Der folgende Code und Ablauf basieren auf synthetischen Beispielen, die in einer isolierten Umgebung getestet wurden. Sie stellen keine Garantie für alle authentischen Dokumente oder Produkteigenschaften dar. Bitte bewahren Sie vor der Bearbeitung wichtiger Dokumente die Originale auf und überprüfen Sie diese anhand der Grenzen und Akzeptanzpunkte im Text.

Wie kann ich es erneut versuchen, nachdem die Dokumentaufgabe einen Fehler gemeldet hat? Fazit in einem Satz

Klassifizieren Sie zunächst den Fehler, bevor Sie entscheiden, ob Sie es erneut versuchen: Vorübergehende Fehler werden begrenzt und behoben, Berechtigungs- und Kontoprobleme werden gestoppt und an den Benutzer übergeben, und Eingabefehler werden dem Benutzer überlassen, um sie zu beheben.

Ihre SituationEmpfohlene PraktikenGrund
Vorübergehende Überlastung des DienstesBegrenzter Backoff, begrenzte Anzahl von Malen und GesamtwartezeitVermeiden Sie eine intensive Neuausgabe aller Aufgaben gleichzeitig
Login oder Berechtigung ungültigFordern Sie den Benutzer auf, sich erneut zu autorisierenDie wiederholte Wiederverwendung alter Anmeldeinformationen wird weiterhin zum Scheitern führen
Konto- oder Rechnungsanomalieanhalten und berichtenEs sollte keine automatischen Aufladungen oder Kontoänderungen geben
Fehler in der EingabestrukturLassen Sie den Benutzer die Eingabe korrigierenEs macht keinen Sinn, genau dieselbe Datei erneut zu senden
Zeitüberschreitung bei der POST-AnfrageÜberprüfen Sie zunächst, ob die Schnittstelle idempotente Schlüssel oder Aufgabenabfragen unterstützt.Wenn der Client keine Antwort erhält, bedeutet das nicht, dass der Server keine Aufgabe erstellt hat.

Stellen Sie zunächst fest, ob bei einem erneuten Versuch doppelte Aufgaben generiert werden.

POST-Timeouts sind besonders problematisch. Wenn der Client keine Antwort erhält, bedeutet das nicht, dass der Server keine Aufgabe erstellt hat. Wenn die Schnittstelle keine idempotenten Schlüssel und keinen Aufgabenabfragemechanismus hat, können durch blindes erneutes Senden mehrere Übersetzungsaufgaben entstehen.

Daher sollte die Wiederholungsstrategie zunächst dem Schnittstellenvertrag folgen und nicht nur den HTTP-Statuscode betrachten.

Schreiben Sie die Anzahl der Male und das Wartebudget als reine Funktionen

from enum import Enum

class Failure(Enum):
    TRANSIENT = "transient"
    AUTH = "auth"
    BILLING = "billing"
    INVALID_INPUT = "invalid_input"

def delay_for(kind, attempt, replay_safe):
    if type(attempt) is not int or attempt < 0:
        raise ValueError("invalid attempt")
    if not replay_safe or kind is not Failure.TRANSIENT:
        return None
    schedule = (1, 2, 4)
    return schedule[attempt] if attempt < len(schedule) else None

assert delay_for(Failure.TRANSIENT, 0, True) == 1
assert delay_for(Failure.TRANSIENT, 2, True) == 4
assert delay_for(Failure.TRANSIENT, 3, True) is None
assert delay_for(Failure.TRANSIENT, 0, False) is None
assert delay_for(Failure.BILLING, 0, True) is None
assert delay_for(Failure.INVALID_INPUT, 0, True) is None

Dieser Code berechnet nur den Wiederholungsplan, wartet nicht wirklich und sendet keine Anfragen. Die festen eins, zwei und vier Sekunden sind die Werte der synthetischen Demonstration und stellen keine allgemeinen Serviceempfehlungen dar.

Produktionsumgebungen müssen außerdem die folgenden Punkte berücksichtigen:

  • Retry-After vom Server zurückgegeben
  • Zufälliger Jitter, um die gleichzeitige Wiederaufnahme einer großen Anzahl von Aufgaben zu vermeiden
  • Gesamtfrist
  • Begrenzen Sie die Anzahl der Parallelitäten

Wenn die vom Server benötigte Wartezeit das lokale Budget überschreitet, sollte er die Wiederholungsversuche beenden, anstatt die Anfrage im Voraus zu initiieren.

Fehlertypen entsprechen unterschiedlichen Aktionen

scheiternOptionale Aktionensollte nicht standardmäßig erfolgen
Vorübergehende StausEs gibt einen GrenzrückzugAlle Aufgaben werden gleichzeitig intensiv neu gestartet
Anmeldung oder Berechtigung läuft abErinnere sie eindeutig daran, die Autorisierung zu erneuernWiederholtes Wiederholen alter Zugangsdaten
Konto- oder RechnungsanomalienStopp und BerichtAutomatische Aufladung oder Kontoänderung
Fehler in der EingabestrukturLass die Nutzer ihre Eingaben korrigierenSenden Sie exakt dieselbe Datei erneut

Logische Aufgaben und Versuchsprotokolle speichern

Jede Benutzeroperation entspricht einer logischen Aufgabe, und es kann mehrere Versuche unter dieser Logik geben. Jeder Versuch zeichnet die Startzeit, die Fehlerkategorie und die entfernte Aufgaben-ID auf. Am Ende wird nur ein Ergebnis ausgewählt, das die Akzeptanz bestanden hat.

Der Vorteil dieses Ansatzes besteht darin, dass es bei der Fehlerbehebung von Wiederholungsversuchen eine vollständige Aufzeichnung gibt und die Anzahl der Versuche nicht fälschlicherweise als Anzahl der Benutzeranfragen gezählt wird.

📊 Kernvergleich

KonzeptNimm auf, was es istFunktion
Logische AufgabenEin-Benutzer-OperationEntspricht derselben Anfrage, die der Nutzer gesehen hat.
Versuch, den Überblick zu behaltenStartzeit, Fehlerkategorie, entfernte Aufgaben-IDVerwendet zur Fehlersuche des Wiederholungsprozesses
AkzeptanzergebnisseEin Output, das die Akzeptanz bestanden hatAls Endergebnis der Lieferung

Die Stabilität der Übersetzungserfahrung ergibt sich aus klaren Erklärungen

Beim Verbinden mit OmniDoc sollte das Frontend die Nutzer klar über den aktuellen Status informieren: ob sie warten, eine Neuautorisierung benötigen oder ihr Konto überprüfen müssen. Zeigen Sie nicht alle Situationen als "Generieren" an.

Nutzer sind bereit, auf eine festgelegte Aufgabe außerhalb des Ausgangs zu warten, drücken jedoch nicht wiederholt auf einen Button, der kein Feedback gibt.

Quellen: Python enum.

🎯 Welche Methode passt zu dir?

Wenn du auf die Wiederaufnahme des Betriebs wartest

Nutze begrenzten Rückzug, setze die maximale Anzahl und die gesamte Wartezeit und respektiere dieRetry-After des Servers.

Wenn du auf Berechtigungs- oder Kontoprobleme stößt

Stoppen Sie den automatischen Neuversuch, fordern Sie die Nutzer auf, den Kontostatus neu zu autorisieren oder zu überprüfen.

Wenn deine Eingabedateistruktur falsch ist

Bitte die Nutzer, Dateien vor der Einsendung zu reparieren, und senden Sie dieselbe Datei nicht erneut.

Wenn die von dir aufgerufene Schnittstelle POST ist und möglicherweise zeitüberlaufen ist,

Zuerst bestätigen Sie, ob die Schnittstelle idempotente Schlüssel oder Task-Abfragen unterstützt, und entscheiden Sie dann, ob Sie es erneut senden.

❓ Häufig gestellte Fragen (FAQ)

1. Können alle Fehler direkt erneut überprüft werden?

Nein, das kannst du nicht. Berechtigungsfehler, Kontoüberzahlungen, beschädigte Dateien und temporäre Dienstbesetzung sollten separat behandelt werden; nur temporäre Ausfälle sind für begrenzte Vermeidung geeignet.

2. Kann ich nach Ablauf eines POST-Timeouts erneut posten?

Es wird nicht empfohlen, direkt erneut zu posten. Das Ausbleiben einer Antwort des Clients bedeutet nicht, dass der Server keine Aufgaben erstellt hat. Ohne Idempotenzschlüssel oder Aufgabenabfragemechanismen können doppelte Aufgaben auftreten.

3. Wie sollte die Anzahl der Wiederholungen und Wartezeiten bestimmt werden?

Die festen Eins, zwei und vier Sekunden sind nur für die Synthesedemonstration. Die Produktionsumgebung sollte durch Kombination von Retry-After, zufälligem Jitter, Gesamtabbruchszeit und Nebenläufigkeitsbeschränkungen bestimmt werden.

4. Wird die Anzahl der Versuche die Statistiken der Nutzeranfragen beeinflussen?

Nein, man zeichnet einfach eine Benutzeroperation als logische Aufgabe auf und jeden erneuten Versuch als Versuch unter dieser Aufgabe.

📝 Zusammenfassung

Der Schlüssel zum erneuten Versuch ist nicht, es mehrmals zu versuchen, sondern zuerst die Art des Scheiterns zu identifizieren, bevor man entscheidet, was zu tun ist. Wiederherstellbare Fehler werden begrenzt und erneut versucht, und Probleme, die menschliche Behandlung erfordern, werden umgehend an die Nutzer zurückgegeben.

Erleben Sie jetzt: Laden Sie Ihr Dokument hoch, um mit der Übersetzung zu beginnen, wobei Sie die ursprüngliche Formatierung bewahren

Aktualisiert am 2026-11-14