Entwicklung einer KI-Video-Job-Queue in TypeScript
Die Generierung von KI-Videos ist keine standardmäßige HTTP-Anfrage. Ein Nutzer sendet einen Prompt und Einstellungen. Das Ergebnis benötigt Minuten, um einzutreffen.
Ihr Backend muss mehrere Schritte verarbeiten:
- Eingabe validieren.
- Einen Job-Datensatz erstellen.
- Den Job an einen Provider übermitteln.
- Ergebnisse abfragen (Polling).
- Fehler behandeln.
- Den Status dem Nutzer anzeigen.
Sie sollten eine Queue und einen Adapter-Layer verwenden. Dies verhindert, dass providerspezifischer Code Ihre gesamte Anwendung beeinträchtigt.
Definieren Sie einen Core-Job-Typ, der als Ihr Produktvertrag fungiert.
type JobStatus = "queued" | "validating" | "running" | "delayed" | "succeeded" | "failed";
type VideoJob = {
id: string;
userId: string;
model: string;
prompt: string;
aspectRatio: "16:9" | "9:16" | "1:1";
durationSeconds: number;
status: JobStatus;
providerTaskId?: string;
outputUrl?: string;
errorCode?: VideoJobErrorCode;
};
Verwenden Sie ein Interface für Ihre Provider. Dies hält Ihre Worker-Logik sauber.
interface VideoProvider {
submit(job: VideoJob): Promise<{ providerTaskId: string }>;
poll(providerTaskId: string): Promise<
| { status: "running" }
| { status: "succeeded"; outputUrl: string }
| { status: "failed"; error: unknown }
>;
normalizeError(error: unknown): VideoJobErrorCode;
}
Befolgen Sie diese Best Practices für Ihren Workflow:
Führen Sie zuerst kostengünstige Prüfungen durch. Validieren Sie Prompts und Dauer, bevor Sie teure APIs aufrufen.
Nutzen Sie eine Polling-Strategie. Implementieren Sie eine Schleife mit zunehmenden Verzögerungen.
Behandeln Sie Verzögerungen. Wenn ein Job zu lange dauert, verschieben Sie ihn in den Status „delayed“. Verwenden Sie einen separaten Worker, um verzögerte Jobs später zu prüfen.
Normalisieren Sie Fehler. Zeigen Sie Ihren Nutzern niemals rohe Provider-Fehlermeldungen an. Ordnen Sie technische Fehler menschenlesbaren Nachrichten zu.
Beispiel für Nutzer-Nachrichten:
- „queued“: Ihr Video wartet auf den Start.
- „running“: Ihr Video wird generiert.
- „delayed“: Dies dauert länger als gewöhnlich.
- „moderation_rejected“: Diese Anfrage konnte nicht verarbeitet werden.
Betrachten Sie KI-Videos als ein Job-System. Eine stabile Queue und eine klare Fehler-Taxonomie machen Ihr Produkt einfacher zu warten und zu skalieren.
Quelle: https://dev.to/miao_cunhui_587ccddb6acc1/building-an-ai-video-job-queue-in-typescript-1349