PerfectVector
Di Jay

Vettorizza immagini in serie con una coda API persistente

Vettorizza immagini in serie con una coda persistente. Salva gli ID, gestisci i file con errori e riprendi il lavoro senza ripetere le conversioni finite.

8 min di lettura
In questa pagina

Per vettorizzare immagini in serie con un’API, metti i file sorgente in coda e salva lo stato di ciascuno prima di passare al successivo. Con PerfectVector API v1, il lotto è gestito dal tuo processo. L’API accetta un’immagine per richiesta e, per impostazione predefinita, consente una conversione live alla volta per account. Limiti API di PerfectVector

Provalo con la tua immagine
Apri lo strumento completo
Puoi provarlo gratis. Rilascia un’immagine e guarda l’anteprima del tuo vettoriale, senza registrarti.

Crea una riga nella coda per ogni immagine

Parti da una copia stabile di ogni originale e da una cartella di destinazione separata. Gli esempi presuppongono un solo processo, un database SQLite locale e una cartella con PNG, JPEG o WebP a fotogramma singolo. Controlla i limiti dei file per l’API prima di aggiungere le immagini alla coda. Usa percorsi di output univoci, così due file chiamati logo.png non si sovrascrivono.

Salva questi campi insieme prima di tentare il primo caricamento.

CampoChe cosa conservare
SorgentePercorso stabile o versione dell’oggetto, e hash dei byte originali.
Chiave della richiestaUna chiave di idempotenza per riconoscere gli invii ripetuti della stessa operazione. Annota anche quando tenti la prima POST.
ID di conversioneL’ID vec_… dell’API, salvato appena lo ricevi.
OutputUna destinazione locale univoca e l’ultimo stato confermato nella coda.
Dettagli dell’erroreCodice del problema API, ID della richiesta o errore di conversione, se disponibile.

Salva la riga nel database prima di inviare la POST. Se l’API accetta il file ma la connessione cade prima che arrivi l’ID, puoi riusare la chiave salvata. PerfectVector la riconosce per 24 ore dalla prima richiesta nello stesso account e nella stessa modalità. Nel nuovo invio mantieni gli stessi byte e le stesse opzioni. Idempotenza di PerfectVector

Flusso di lavoro
Una pila di immagini raster con un’etichetta porta a una conversione registrata e poi a un SVG. Una freccia dal riavvio torna alla conversione salvata.
Salva l’ID della conversione prima del download. Se il lavoro si interrompe, riparti da quell’ID.

Invia, controlla e salva un risultato alla volta

Invia una POST multipart a /v1/vectorizations con l’immagine nel campo image e la chiave della riga nell’intestazione Idempotency-Key. Usa Prefer: respond-async per ottenere rapidamente la risposta. Salva l’ID restituito prima di controllare lo stato. Una risposta 202 indica che la conversione è in sospeso. Una 201 può descrivere una conversione riuscita o fallita: leggi lo stato nel JSON. Attesa ed elaborazione asincrona di PerfectVector

Ecco come decide il processo. Uno stato della coda come saved è un’etichetta che definisci tu. L’API restituisce stati come processing e succeeded.

Riga salvata sul discoPassaggio successivo
Nuova, con la chiave salvataInvia i byte originali e registra l’ID di conversione restituito.
Invio incerto, ID sconosciutoRipeti il caricamento con la chiave salvata entro la finestra prevista. Se è scaduta, segnala la riga per un controllo prima di avviare una nuova conversione che potrebbe essere addebitata.
ID di conversione salvatoControlla lo stato con l’ID esistente. Aspetta circa due secondi tra le richieste e rispetta le attese imposte dal limite di frequenza.
Conversione riuscita, file mancanteScarica il risultato, verifica image/svg+xml, scrivilo in un file temporaneo e rinominalo nella destinazione finale. Segna la riga come salvata dopo la rinomina.
SalvataSalta la POST. Se manca il file, prova a recuperare il risultato esistente finché il link è valido.
Rifiutata o fallitaRegistra il problema HTTP o l’errore finale. Correggi un input non valido prima di riprovare come nuova operazione.

Se una POST restituisce 429 o 503, rispetta Retry-After e riprova con gli stessi byte e le stesse opzioni usando la chiave originale entro 24 ore. Se il problema è too_many_in_flight, aspetta anche che la conversione live in corso finisca. Se hai un ID, controllalo prima di reinviare il file. Una conversione definitivamente failed con timeout o provider_unavailable richiede una nuova chiave se decidi di riprovare. Se il provider non è disponibile, aspetta che il servizio torni operativo. Un timeout del client lascia incerto lo stato della conversione: usa l’ID o ripeti la richiesta con la chiave originale entro la finestra prevista. Errori API di PerfectVector

Al riavvio, il processo può ripetere il controllo dello stato o il download senza avviare un’altra conversione. Scarica e conserva ogni SVG riuscito prima di passare alla riga successiva. Il risultato API scade 24 ore dopo la fine della conversione. Risultati e download di PerfectVector

Adatta questo pseudocodice al database e al client HTTP. La prova qui sotto presuppone che il processo registri ogni richiesta e che, solo durante il test, possa fermarsi subito dopo aver salvato il secondo ID.

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

Prova il riavvio con tre file

Usa due piccoli loghi PNG e un PNG danneggiato. Lascia apposta il file danneggiato per vedere se la coda prosegue dopo il rifiuto. Con una chiave di test, i due file validi devono restituire un SVG di esempio. Quello danneggiato deve essere rifiutato durante la verifica e non deve produrre un file nella cartella di destinazione. La modalità di test restituisce lo stesso SVG per entrambi i file validi. Modalità di test di PerfectVector

  1. Lascia che il primo file raggiunga saved. Metti in pausa il processo dopo aver scritto l’ID del secondo file valido e prima di averne salvato l’SVG.
  2. Riavvia il processo. Verifica che salti il primo file e scarichi il secondo usando l’ID esistente.
  3. Verifica che il file danneggiato compaia nel rapporto con il codice del problema e che non sia stato scritto alcun SVG per quel file.
  4. Esegui il processo un’altra volta. Verifica che i due file salvati siano ancora al loro posto e che nessuno dei due venga ricaricato.

Abbiamo provato il riavvio con una chiave di test. Il processo ha salvato due SVG di esempio, registrato come rifiutato il file danneggiato e ripreso il secondo file valido tramite il suo ID. L’ultima esecuzione non ha inviato richieste. Per verificare lo stato in sospeso usa una risposta di prova: le conversioni di test terminano subito.

Domande frequenti

Posso inviare tutti i file con una sola chiamata API?

PerfectVector API v1 accetta un’immagine per POST. Invia il lotto come serie di richieste distinte. In modalità live, rispetta il limite di conversioni contemporanee e aspetta che quella attiva finisca prima di inviare la successiva. Limiti API di PerfectVector

Che faccio se l’SVG è scaduto?

Usa l’SVG salvato se lo avevi scaricato. In caso contrario, controlla lo stato e decidi se avviare una nuova operazione. Una nuova conversione live può consumare un altro credito se riesce. Risultati e download di PerfectVector

Fonti

  1. PerfectVector — Limiti — Verifica dei file e limite predefinito di conversioni contemporanee.
  2. PerfectVector — Idempotenza — Ambito della chiave, finestra e corrispondenza degli input.
  3. PerfectVector — Attesa ed elaborazione asincrona — Invio asincrono e controllo dello stato.
  4. PerfectVector — Risultati — Download, errori e scadenza dei risultati.
  5. PerfectVector — Modalità di test — Verifiche di caricamento e risultati che puoi provare con una chiave di test.
  6. PerfectVector — Errori — Attese da Retry-After, errori definitivi e casi in cui serve una nuova chiave.

Ottieni una chiave di test dalla pagina API di PerfectVector e prova con tre tuoi file. Verifica che ogni riga riuscita abbia un SVG sul disco e che al riavvio non venga reinviata nessuna riga completata.

Altro dal blog

PerfectVector

Trasforma l’immagine in
tracciati vettoriali puliti e modificabili

Vettorializza e controlla l’anteprima gratis, senza limiti giornalieri.