PerfectVector
Von Jay

Bilder per API mit fortsetzbarer Queue vektorisieren

Vektorisiere Bilder stapelweise per API. Speichere Auftrags-IDs in einer dauerhaften Warteschlange, behandle Fehler und setze einen Lauf ohne erneute Uploads fertiger Aufträge fort.

7 Min. Lesezeit
Auf dieser Seite

Lege zur Stapelverarbeitung per API für jede Quelldatei einen Eintrag in einer Warteschlange an. Speichere den Fortschritt, bevor du mit der nächsten Datei beginnst. Bei PerfectVector API v1 verwaltet dein Worker den Stapel. Die API nimmt pro Anfrage ein Bild entgegen und erlaubt standardmäßig eine laufende Live-Konvertierung pro Konto. Limits der PerfectVector API

Probier es mit deinem eigenen Bild
Vollständiges Tool öffnen
Kostenlos und ohne Anmeldung: Lege ein Bild ab und sieh dir die Vorschau deines Vektors an.

Einen Eintrag pro Bild anlegen

Beginne mit einer unveränderten Kopie jeder Vorlage und einem separaten Ausgabeordner. Die Beispiele gehen von einem Worker, einer lokalen SQLite-Datenbank und einem Ordner mit PNG-, JPEG- oder WebP-Dateien mit je einem Einzelbild aus. Prüfe die Dateigrenzen der API, bevor du Dateien einreihst. Vergib eindeutige Ausgabepfade, damit sich die Ergebnisse zweier Quellen namens logo.png nicht überschreiben.

Speichere die folgenden Felder zusammen vor dem ersten Upload.

FeldWas du festhältst
QuelleEinen stabilen Pfad oder eine feste Objektversion und eine Prüfsumme der Originaldaten.
AnfrageschlüsselEinen Idempotenzschlüssel, der Wiederholungen desselben Vorgangs kennzeichnet. Notiere den Zeitpunkt des ersten POST-Versuchs.
Konvertierungs-IDDie vec_…-ID der API, sobald du sie erhältst.
AusgabeEin eindeutiges lokales Ziel und den letzten bestätigten Zustand des Eintrags.
FehlerdetailsDen API-Problemcode, die Anfrage-ID oder den Konvertierungsfehler, falls vorhanden.

Schreibe den Eintrag dauerhaft in die Datenbank, bevor du den POST sendest. Falls die API den Upload annimmt, aber die Verbindung vor Erhalt der ID abbricht, kannst du den gespeicherten Schlüssel erneut verwenden. PerfectVector erkennt ihn 24 Stunden ab der ersten Anfrage im selben Konto und Modus. Sende bei der Wiederholung dieselben Bilddaten und Optionen. Idempotenz bei PerfectVector

Schematischer Ablauf
Ein gekennzeichneter Stapel Rasterbilder führt zu einem gespeicherten Konvertierungsdatensatz und dann zu einem SVG. Ein Pfeil zeigt vom Neustart zurück zum Datensatz.
Speichere die Konvertierungs-ID vor dem Download. Setze den Auftrag nach einer Unterbrechung mit dieser ID fort.

Aufträge einzeln senden, abfragen und speichern

Sende einen Multipart-POST an /v1/vectorizations mit dem Bild im Feld image und dem Header Idempotency-Key aus dem Eintrag. Mit Prefer: respond-async bleibt die Anfrage kurz. Speichere die ID einer erfolgreichen Antwort, bevor du den Status abfragst. Eine Antwort mit 202 bedeutet, dass die Konvertierung noch läuft. Eine Antwort mit 201 kann einen Erfolg oder einen Fehlschlag beschreiben. Prüfe den Status im JSON. Wartezeiten und asynchrone Antworten bei PerfectVector

So entscheidet der Worker über den nächsten Schritt. Einen Zustand wie saved definierst du für deine eigene Warteschlange. Die API gibt Statuswerte wie processing und succeeded zurück.

Gespeicherter EintragNächster Schritt des Workers
Neu, mit gespeichertem SchlüsselOriginaldaten hochladen und die zurückgegebene Konvertierungs-ID speichern.
Unklarer Upload, ID unbekanntInnerhalb der Frist denselben Upload mit dem gespeicherten Schlüssel wiederholen. Ist die Frist abgelaufen, den Eintrag zur Prüfung markieren, bevor du eine neue, möglicherweise kostenpflichtige Konvertierung startest.
Konvertierungs-ID gespeichertStatus der vorhandenen ID abfragen. Etwa zwei Sekunden zwischen Abfragen warten und Wartezeiten bei Ratenlimits beachten.
Konvertierung erfolgreich, Datei fehltErgebnis herunterladen, auf image/svg+xml prüfen, in eine temporäre Datei schreiben und diese an den Zielpfad umbenennen. Erst danach den Eintrag als gespeichert markieren.
GespeichertPOST überspringen. Fehlt die Ausgabe, versuche das vorhandene Ergebnis abzurufen, solange sein Link noch funktioniert.
Abgelehnt oder fehlgeschlagenDas HTTP-Problem oder den endgültigen Konvertierungsfehler protokollieren. Fehlerhafte Eingaben korrigieren, bevor du sie als neuen Auftrag einreichst.

Wenn ein POST 429 oder 503 liefert, halte Retry-After ein und sende innerhalb der 24 Stunden dasselbe Bild mit denselben Optionen und dem ursprünglichen Schlüssel erneut. Bei too_many_in_flight warte zusätzlich auf den Abschluss der laufenden Live-Konvertierung. Wenn du eine Konvertierungs-ID hast, prüfe sie vor einem erneuten Upload. Nach einem bestätigten endgültigen Status failed mit timeout oder provider_unavailable brauchst du für einen neuen Versuch einen neuen Schlüssel. Warte bei einem nicht verfügbaren Anbieter, bis der Dienst wieder bereitsteht. Bei einer Zeitüberschreitung des Clients ist der Stand des ursprünglichen Auftrags unklar. Verwende seine ID oder wiederhole die Anfrage innerhalb der Frist mit dem ursprünglichen Schlüssel. Fehler der PerfectVector API

Nach einem Neustart kann der Worker den Status erneut abfragen oder ein Ergebnis herunterladen, ohne eine neue Konvertierung anzustoßen. Lade jedes erfolgreiche SVG herunter und speichere es, bevor du in der Warteschlange weitergehst. Das API-Ergebnis ist ab Abschluss 24 Stunden verfügbar. Ergebnisse und Downloads bei PerfectVector

Setze den Worker anhand dieses Pseudocodes mit deiner Datenbank und deinem HTTP-Client um. Für den folgenden Test soll der Worker jede Anfrage protokollieren und unmittelbar nach dem dauerhaften Speichern der zweiten Konvertierungs-ID pausieren können.

for each queue row in a stable order:
    if the row is rejected or its saved SVG is still on disk:
        continue
    if the row has no conversion ID:
        verify source bytes match the stored digest
        if an earlier POST is uncertain and the replay window expired:
            flag the row for review and continue
        POST with the stored key and original bytes and options
        if the response is a permanent input rejection:
            commit the error and continue
        if the POST times out or the service requests a retry:
            keep the same key, record the retry time and stop this run
        commit the returned conversion ID
        pause here when testing recovery after a commit
    GET status by conversion ID, waiting between pending responses
    if conversion failed:
        commit its error and continue
    download the existing result and check the SVG media type
    write to a temporary file and rename it to the output path
    commit the saved state

Neustart mit drei Dateien testen

Nimm zwei kleine PNG-Logos und ein beschädigtes PNG. Lass die beschädigte Datei bewusst im Test, um zu sehen, ob die Warteschlange nach der Ablehnung weiterläuft. Mit einem Testschlüssel sollten die beiden gültigen Dateien Beispiel-SVGs liefern. Der beschädigte Upload sollte bei der Validierung scheitern und nicht im Ausgabeordner landen. Der Testmodus liefert für beide gültigen Dateien dasselbe Beispiel-SVG. PerfectVector-Testmodus

  1. Warte, bis die erste Datei saved erreicht. Pausiere den Worker, nachdem die ID der zweiten gültigen Datei geschrieben, ihre Ausgabe aber noch nicht gespeichert wurde.
  2. Starte den Worker neu. Prüfe, ob er die erste Datei überspringt und die zweite mit ihrer vorhandenen Konvertierungs-ID herunterlädt.
  3. Prüfe, ob die beschädigte Datei mit ihrem Problemcode im Fehlerbericht steht und kein SVG dafür geschrieben wurde.
  4. Starte den Worker ein weiteres Mal. Prüfe, ob beide Dateien weiterhin vorhanden sind und kein erfolgreicher Upload erneut gesendet wird.

Wir führten den Neustarttest mit einem API-Testschlüssel aus. Der Worker speicherte zwei Beispiel-SVGs, protokollierte eine beschädigte Eingabe als abgelehnt und setzte den zweiten erfolgreichen Auftrag anhand seiner vorhandenen ID fort. Der abschließende Durchlauf stellte keine Anfragen. Verwende eine lokale Testantwort für den ausstehenden Zustand, da Testkonvertierungen sofort fertig sind.

Häufige Fragen

Kann ich alle Dateien in einem API-Aufruf senden?

PerfectVector API v1 akzeptiert ein Bild pro POST. Sende einen Stapel als Reihe einzelner Anfragen. Halte bei Live-Aufträgen das Limit des Kontos ein und warte auf den Abschluss der aktuellen Konvertierung, bevor du die nächste einreichst. Limits der PerfectVector API

Was ist, wenn das SVG bereits abgelaufen ist?

Verwende dein gespeichertes SVG, wenn du es schon heruntergeladen hast. Prüfe andernfalls den Konvertierungsstatus und entscheide, ob ein neuer Auftrag nötig ist. Eine neue Live-Konvertierung kann bei Erfolg einen weiteren Credit kosten. Ergebnisse und Downloads bei PerfectVector

Quellen

  1. PerfectVector – Limits – Dateiprüfungen und standardmäßiges Parallelitätslimit pro Konto.
  2. PerfectVector – Idempotenz – Gültigkeitsbereich des Schlüssels, Wiederholungsfrist und übereinstimmende Eingaben.
  3. PerfectVector – Wartezeiten und asynchrone Antworten – Asynchrone Aufträge und Statusabfragen.
  4. PerfectVector – Ergebnisse – Download, Fehler und Verfall von Ergebnissen.
  5. PerfectVector – Testmodus – Upload-Prüfungen und Ergebnisse mit einem Testschlüssel.
  6. PerfectVector – Fehler – Wartezeiten aus Retry-After, endgültige Fehler und neue Schlüssel.

Erstelle über die API-Seite von PerfectVector einen Testschlüssel und teste den Ablauf mit drei eigenen Dateien. Prüfe, ob zu jedem erfolgreichen Eintrag ein SVG gespeichert wurde und ob beim Neustart kein fertiger Auftrag erneut eingereicht wird.

Mehr aus dem Blog

PerfectVector

Verwandle dein Bild in
saubere, bearbeitbare Vektorpfade

Vektorisieren und Vorschau prüfen: kostenlos und ohne Tageslimit.