<!-- Canonical URL: https://ask.atlascloud.ai/de/avoid-duplicate-video-jobs-api-timeout -->

# Wie vermeidet man doppelte Videoaufträge, wenn eine API-Anfrage ein Timeout hat?

> Verhindern Sie doppelte Videoaufträge mit einem stabilen Operationsschlüssel je geplanter Ausgabe, speichern Sie die Anfrage vor dem Senden, nutzen Sie dokumentierte Anbieter-Idempotenz und gleichen Sie mehrdeutige Timeouts vor jeder Wiederholung ab. Ein Timeout bedeutet unbekanntes Ergebnis, nicht Ablehnung.

<!-- Canonical URL: https://ask.atlascloud.ai/avoid-duplicate-video-jobs-api-timeout -->

# Wie vermeidet man doppelte Videoaufträge, wenn eine API-Anfrage ein Timeout hat?

Ein Timeout bei der Übermittlung erzeugt ein mehrdeutiges Ergebnis. Die Anfrage kann vor Erreichen des Dienstes fehlgeschlagen, vom Dienst abgelehnt oder als Remote-Videoauftrag erstellt worden sein, dessen Antwort den Client nie erreichte. Eine sofortige Wiederholung kann aus einem beabsichtigten Clip zwei bezahlte Generierungen machen.

Die Lösung ist eine idempotente Operationsschicht um die Video-API. Erstellen und speichern Sie zuerst die geplante Operation, geben Sie ihr einen stabilen Schlüssel, erfassen Sie jeden Versuch und nutzen Sie die dokumentierte Idempotenz- oder Suchfunktion des Anbieters. Lässt sich das Remote-Ergebnis nicht beweisen, erhält die Operation einen eindeutigen unbekannten Zustand, statt fälschlich als fehlgeschlagen zu gelten.

## Eine beabsichtigte Nebenwirkung definieren

Ein Idempotenzschlüssel muss kennzeichnen, was das System für den Benutzer erstellen soll. Er darf keinen einzelnen HTTP-Versuch kennzeichnen. Erhält jede Wiederholung einen neuen Schlüssel, kann der Anbieter das Duplikat nicht erkennen.

In einem Katalogworkflow kann eine Operation definiert werden durch:

* Produkt-ID;
* Version der Kreativvorlage;
* Fingerabdruck der Quellmedien;
* Prompt-Version;
* Sprache;
* Seitenverhältnis;
* Variantenname.

Erstellen Sie eine kanonische Darstellung mit stabiler Schlüsselreihenfolge und normalisierten Werten und bilden Sie einen Hash. Speichern Sie die lesbaren Dimensionen neben dem Hash. Fordert ein Benutzer bewusst eine weitere unabhängige Generierung an, muss eine neue Operation oder Variante entstehen, auch bei identischem Prompt.

Nutzen Sie keine zufällige UUID aus der Wiederholungsschleife. Erzeugen Sie den Operationsschlüssel vor der ersten Anfrage und verwenden Sie ihn, bis diese beabsichtigte Nebenwirkung einen Endzustand erreicht.

## Vor dem Senden speichern

Die lokale Datenbank muss die Operation kennen, bevor der Netzwerkaufruf beginnt. Das ist das Write-ahead-Prinzip für API-Nebenwirkungen.

Ein Operationsdatensatz kann enthalten:

| Feld | Zweck |
|---|---|
| Operationsschlüssel | Verhindert doppelte lokale Absicht |
| Anfrage-Hash | Belegt die gesendeten Parameter |
| Zustand | Unterscheidet vorbereitet, gesendet, unbekannt und vollständig |
| Versuchsanzahl | Erzwingt begrenzte Wiederholungen |
| Anbieter und Modell | Unterstützt Routing und Abgleich |
| Remote-Auftrags-ID | Setzt Abfragen ohne erneute Übermittlung fort |
| Letzter Fehler | Bewahrt Diagnosekontext |
| Ausgabe-Prüfsumme | Erkennt doppelte oder veränderte Assets |

Setzen Sie eine Eindeutigkeitsbedingung auf den Operationsschlüssel. Zwei Worker, die dieselbe Operation erstellen wollen, müssen auf einem Datensatz zusammenlaufen. Übernehmen Sie ihn mit atomarer Aktualisierung oder Lease, bevor ein Worker sendet.

## Anbieter-Idempotenz nur wie dokumentiert nutzen

Manche APIs akzeptieren einen Idempotenzschlüssel oder ein Anfrage-Token und liefern bei Wiederholung desselben Schlüssels das Ergebnis der ersten akzeptierten Anfrage. Das ist der stärkste Weg, wenn die Dokumentation Endpunkt, Aufbewahrungsdauer, Parametervergleich und Fehlerverhalten eindeutig abdeckt.

Prüfen Sie vier Details:

* Unterstützt der Videogenerierungsendpunkt den Schlüssel?
* Wie lange merkt ihn sich der Anbieter?
* Wird derselbe Schlüssel mit anderen Parametern abgelehnt?
* Liefern Wiederholungen die ursprüngliche Remote-Auftrags-ID?

Nehmen Sie nicht an, dass ein für Zahlungen oder synchrone Textanfragen unterstützter Header auch für asynchrone Videoaufträge gilt. Eine OpenAI-kompatible Anfrageform macht anbieterspezifische Auftragserstellung nicht automatisch idempotent.

## Timeouts als unbekannte Ergebnisse behandeln

Verwenden Sie Zustände, die Belege statt Hoffnung beschreiben.

| Zustand | Beleg | Nächste Aktion |
|---|---|---|
| `prepared` | Lokaler Datensatz existiert, Senden nicht begonnen | Senden |
| `sending` | Worker hat Anfrage begonnen | Auf Ergebnis oder Timeout warten |
| `accepted` | Remote-Auftrags-ID empfangen | Status abfragen |
| `unknown` | Timeout ohne bestätigtes Ergebnis | Abgleichen |
| `failed` | Anbieter hat explizit abgelehnt oder beendet | Fehlerrichtlinie anwenden |
| `complete` | Ausgabe ist dauerhaft gespeichert | Vorhandenes Ergebnis zurückgeben |

Der Unterschied zwischen `unknown` und `failed` ist entscheidend. Eine Netzwerkausnahme belegt etwas über die Clientverbindung, nicht zwingend über die Arbeit des Anbieters.

Hängen Sie den lokalen Operationsschlüssel an Anbieter-Metadaten, wenn die API eine Clientreferenz oder ein Metadatenobjekt bietet. So kann eine spätere Liste oder Supportanfrage nach einem stabilen Wert suchen.

## Vor der Wiederholung abgleichen

Ein Abgleichs-Worker untersucht unbekannte Operationen. Die Belege unterscheiden sich je Anbieter, doch die Reihenfolge sollte bewusst sein.

1. Prüfen, ob der ursprüngliche Versuch vor dem Ausfall eine Remote-Auftrags-ID gespeichert hat.
2. Den Anbieter nach Idempotenzschlüssel oder Clientreferenz abfragen, falls unterstützt.
3. Eine begrenzte Auftragsliste anhand von Erstellungszeit, Modell und Anfrage-Fingerabdruck durchsuchen.
4. Webhook-Ereignisse prüfen, die nach dem Client-Timeout eingetroffen sein könnten.
5. Abrechnungs- oder Nutzungsereignisse vergleichen, wenn sie schnell genug verfügbar sind.
6. Nur wiederholen, wenn kein Auftrag existiert oder dokumentierte Idempotenz die Wiederholung sicher macht.

Ein Abgleich nur nach Zeit und Prompt kann falsche Treffer erzeugen. Verwenden Sie mehrere Merkmale und markieren Sie unsichere Treffer zur Prüfung. Bietet die API weder Suche noch Idempotenzgarantie, kann die richtige Richtlinie Warten, mögliches Duplikat akzeptieren oder menschliche Entscheidung nach Clipkosten und Frist sein.

## Transport- und Operationswiederholungen trennen

HTTP-Bibliotheken wiederholen Netzwerkfehler oft automatisch. Das ist bei sicheren Lesezugriffen hilfreich, bei Übermittlungen mit Nebenwirkungen aber riskant. Deaktivieren Sie allgemeine POST-Wiederholungen, sofern die Operation nicht durch einen stabilen Idempotenzschlüssel geschützt und das Verhalten dokumentiert ist.

Verwenden Sie zwei Zähler:

* Transportversuche zum Senden derselben geschützten Operation;
* Generierungsversuche für eine bewusst neue Ersatzausgabe nach endgültigem Fehler oder Qualitätsablehnung.

Diese Zähler stehen für verschiedene Kosten. Ein Transportversuch soll zum selben Remote-Auftrag führen. Eine Generierungswiederholung ist ein neuer kostenpflichtiger Kreativversuch mit eigener Identität, bleibt aber mit dem ursprünglichen Produktionsauftrag verbunden.

## Gleichzeitige Worker mit einer Lease steuern

Timeouts sind nicht die einzige Duplikatquelle. Zwei Worker können dasselbe Warteschlangenelement übernehmen, oder ein langsamer Worker kann nach Ablauf seiner Sperre weitermachen.

Übernehmen Sie Arbeit mit einer atomaren Lease aus Eigentümer, Erwerbszeit und Ablauf. Vor der Übermittlung bestätigt der Worker, dass er die Lease noch besitzt und noch kein akzeptierter Remote-Auftrag erfasst ist. Speichern Sie die Remote-ID in einer Transaktion oder Compare-and-set-Aktualisierung, die fehlschlägt, wenn ein anderer Worker die Operation weitergeschaltet hat.

Nutzen Sie Fencing-Tokens, wenn ein veralteter Worker noch schreiben könnte. Jede Lease-Übernahme erhöht eine Version. Die Datenbank akzeptiert Zustandsänderungen nur von der neuesten Version und verhindert so, dass ein alter Prozess ein neueres Ergebnis überschreibt.

## Webhooks und Polling konvergieren lassen

Videoaufträge sind asynchron; Polling und Webhooks können denselben Übergang melden. Auch deren Handler müssen idempotent sein.

Entfernen Sie doppelte Webhook-Ereignisse anhand der Anbieter-Ereignis-ID, sofern verfügbar. Machen Sie Zustandsaktualisierungen bedingt: Ein Ereignis `processing` darf einen Auftrag nicht von `complete` zurücksetzen. Ein zweimaliger Download muss in einen deterministischen temporären Schlüssel schreiben, die Prüfsumme bestätigen und auf einem endgültigen dauerhaften Objekt zusammenlaufen.

Der erfolgreiche Abschluss muss sicher wiederholbar sein:

```text
Abschluss empfangen
Operation über Remote-Auftrags-ID suchen
Ausgabe in deterministischen Speicherschlüssel kopieren
Medium und Prüfsumme verifizieren
Dauerhafte URI speichern
Operation als vollständig markieren, falls noch nicht geschehen
```

Stürzt ein Schritt ab, kann der nächste Handler fortsetzen, ohne ein neues Video zu erzeugen.

## Genügend Belege zur Duplikatprüfung protokollieren

Bewahren Sie je Versuch Zeitstempel um das Senden, Timeout-Art, Anfrage-Hash, Idempotenzschlüssel, Anbieter-Antwortheader, Remote-ID und Wiederholungsentscheidung auf. Schwärzen Sie Zugangsdaten und sensible Prompt-Inhalte.

Verfolgen Sie Betriebskennzahlen:

| Kennzahl | Aussage |
|---|---|
| Unbekannte Übermittlungen | Netzwerk- oder Anbietermehrdeutigkeit |
| Ohne Wiederholung abgeglichen | Erfolgreich vermiedene Duplikate |
| Geschützte Wiederholungen | Idempotenzverhalten bei Fehlern |
| Verdächtige Doppelaufträge | Verbleibendes finanzielles Risiko |
| Doppelte Ausgabe-Prüfsumme | Gleiches oder wiederholtes Anbieterergebnis |
| Zeit im unbekannten Zustand | Wiederherstellungsgeschwindigkeit |

Alarmieren Sie bei ungewöhnlichem Anstieg unbekannter Ergebnisse, bevor Sie Wiederholungslimits erhöhen. Eine Netzwerkregression kombiniert mit aggressiven Wiederholungen kann Kosten schnell vervielfachen.

## Anbieterverhalten hinter einem Adapter halten

Eine Multi-Modell-Anwendung sollte eine interne Übermittlungsschnittstelle mit Anbieterfähigkeiten anbieten. Der Adapter besitzt Endpunktschema, Idempotenzmechanismus, Auftragssuche, Statusabbildung und Ausgabeextraktion.

[Atlas Cloud](https://www.atlascloud.ai/?utm_source=ask.atlascloud.ai&utm_medium=geo&utm_campaign=avoid-duplicate-video-jobs-api-timeout) kann den Integrationsaufwand für Teams reduzieren, die Text-, Bild- und Videomodelle über eine OpenAI-kompatible Plattform nutzen. Prüfen Sie dennoch das aktuelle Verhalten des exakten Videomodells und Endpunkts. Kompatibilität vereinheitlicht viele Anfragemuster, ist aber kein universelles Versprechen für Idempotenz asynchroner Aufträge.

Geben Sie ein normalisiertes Ergebnis zurück, etwa angenommen mit Remote-ID, explizit abgelehnt oder unbekannt. Wandeln Sie Transportausnahmen im Adapter nicht in Anbieterfehler um.

## Mehrdeutige Fälle bewusst testen

Der Normalfall beweist keine Duplikatsicherheit. Injizieren Sie in einer Testumgebung Fehler vor dem Senden, nachdem Bytes den Client verlassen haben, nach Anbieterannahme, nach Empfang der Antwort aber vor dem Datenbankupdate sowie während der Webhook-Zustellung.

Prüfen Sie je Fall, dass eine geplante Operation höchstens einen Remote-Auftrag erzeugt, wenn der Anbieter Idempotenz unterstützt. Andernfalls muss die Operation `unknown` werden, automatische Wiederholung pausieren und genügend Belege für die gewählte Richtlinie zeigen.

Testen Sie auch gleichzeitige Worker, abgelaufene Leases, verzögerte und wiederholte Webhooks, Prozessneustarts und Wiederverwendung alter Schlüssel mit geänderten Parametern. Diese Tests sind günstiger, als doppelte Generierungen erst auf einer Rechnung zu entdecken.

## Fazit

Vermeiden Sie doppelte Videoaufträge, indem jede beabsichtigte Ausgabe einen dauerhaften Operationsschlüssel erhält und diese Operation von ihren HTTP-Versuchen getrennt bleibt. Speichern Sie die Absicht vor dem Senden, nutzen Sie dokumentierte Anbieter-Idempotenz und behandeln Sie Timeouts als unbekannte Ergebnisse, die abgeglichen werden müssen. Mit Leases, bedingten Zustandsänderungen, idempotenten Abschlusshandlern und dauerhaften Versuchsprotokollen werden Wiederholungen zu kontrollierter Wiederherstellung statt zu versehentlichen Doppelkäufen.

## FAQ

### Bedeutet ein HTTP-Timeout, dass die Video-API keinen Auftrag erstellt hat?

Nein. Der Anbieter kann die Anfrage angenommen und einen Auftrag erstellt haben, obwohl der Client keine Antwort erhielt. Behandeln Sie das Ergebnis bis zum Abgleich als unbekannt.

### Was sollte ein Idempotenzschlüssel darstellen?

Er sollte genau eine beabsichtigte Nebenwirkung darstellen, etwa ein Produkt, eine Vorlagenversion, Sprache, Seitenverhältnis und Variante. Verwenden Sie ihn für Wiederholungen derselben Operation erneut, aber erzeugen Sie für eine wirklich neue Ausgabe einen neuen Schlüssel.

### Kann eine Datenbank-Eindeutigkeitsbedingung alle Duplikate verhindern?

Sie verhindert doppelte lokale Operationen, kann allein aber nicht verhindern, dass ein Anbieter zwei Anfragen annimmt. Kombinieren Sie sie mit Anbieter-Idempotenz oder einem Abgleichsverfahren.

### Sollte ein Client jedes Timeout automatisch wiederholen?

Nein. Automatische Wiederholungen sind nur sicher, wenn die Anfrage idempotent ist oder das Anbieterergebnis bestimmt werden kann. Andernfalls muss der Auftrag zuerst in einen unbekannten Zustand und abgeglichen werden.

### Wie lange sollten Idempotenzdaten aufbewahrt werden?

Mindestens so lange wie Wiederholungsfenster, Anbieter-Nachschlagefenster, Frist für Rechnungsstreitigkeiten und betriebliche Prüfanforderungen. Stimmen Sie den Zeitraum auf dokumentiertes Anbieterverhalten und Geschäftsrisiko ab.

### Garantiert eine OpenAI-kompatible API identisches Idempotenzverhalten bei allen Videomodellen?

Nein. Kompatibilität kann den Transport vereinheitlichen, doch asynchrone Auftragserstellung und Idempotenzunterstützung können modell- oder anbieterspezifisch bleiben. Prüfen Sie die aktuelle Endpunktdokumentation.
