PerfectVector
Oleh Jay

Vektorisasi Massal lewat API dengan Antrean Persisten

Vektorisasi gambar secara massal dengan antrean yang tersimpan. Catat ID, tangani berkas gagal, dan lanjutkan pekerjaan tanpa mengulang konversi yang selesai.

7 menit baca
Di halaman ini

Untuk melakukan vektorisasi gambar secara massal lewat API, masukkan setiap sumber ke antrean dan simpan statusnya sebelum pindah ke berkas berikutnya. Di PerfectVector API v1, proses pekerja Anda yang mengelola antrean. API menerima satu gambar per permintaan dan, secara bawaan, mengizinkan satu konversi live sekaligus per akun. Batas API PerfectVector

Coba dengan gambar Anda sendiri
Buka alat lengkap
Gratis dicoba. Letakkan gambar untuk melihat pratinjau vektor Anda, tanpa perlu mendaftar.

Buat satu catatan antrean untuk setiap gambar

Mulai dengan salinan sumber yang tidak berubah dan folder keluaran terpisah. Contoh ini memakai satu proses pekerja, basis data SQLite lokal, dan folder berisi PNG, JPEG, atau WebP satu bingkai. Periksa batas berkas API sebelum memasukkan berkas ke antrean. Gunakan jalur keluaran yang unik agar dua sumber bernama logo.png tidak saling menimpa.

Simpan kolom berikut bersama-sama sebelum percobaan unggah pertama.

KolomYang disimpan
SumberJalur tetap atau versi objek, beserta hash byte asli.
Kunci permintaanKunci idempotensi untuk mengenali pengiriman ulang operasi yang sama. Catat waktu percobaan POST pertama.
ID konversiID vec_… dari API, disimpan begitu diterima.
KeluaranTujuan lokal yang unik dan status antrean terakhir yang terkonfirmasi.
Rincian kegagalanKode masalah API, ID permintaan, atau kesalahan konversi, jika ada.

Simpan perubahan pada catatan antrean sebelum mengirim POST. Jika API menerima unggahan tetapi koneksi putus sebelum ID diterima, Anda masih punya kunci untuk mengirim ulang. PerfectVector mengenali kunci tersebut selama 24 jam sejak permintaan pertama pada akun dan mode yang sama. Pertahankan byte gambar dan opsi saat mengulang. Idempotensi PerfectVector

Ilustrasi alur kerja
Tumpukan gambar raster bertanda mengarah ke catatan konversi lalu ke SVG. Panah mulai ulang kembali ke catatan yang tersimpan.
Simpan ID konversi sebelum mengunduh. Setelah terjadi gangguan, lanjutkan dari ID tersebut.

Kirim, cek status, dan simpan satu pekerjaan pada satu waktu

Kirim POST multipart ke /v1/vectorizations dengan gambar pada kolom image dan Idempotency-Key dari catatan di header. Gunakan Prefer: respond-async agar pengiriman cepat mendapat respons. Simpan ID dari respons yang berhasil sebelum mengecek status. Respons 202 berarti konversi belum selesai. Respons 201 bisa berisi konversi berhasil atau gagal, jadi baca status di JSON. Waktu tunggu dan proses asinkron PerfectVector

Berikut urutan keputusan proses pekerja. Status antrean seperti saved adalah label Anda sendiri. API mengembalikan status seperti processing dan succeeded.

Catatan antrean di penyimpananLangkah berikutnya
Baru, kunci sudah tersimpanUnggah byte asli dan catat ID konversi yang diterima.
Pengiriman belum pasti, ID belum diketahuiKirim ulang unggahan yang sama memakai kunci tersimpan dalam jangka pengulangan. Jika jangka itu lewat, tandai catatan untuk diperiksa sebelum memulai konversi baru yang mungkin dikenai biaya.
ID konversi tersimpanCek status dengan ID yang ada. Tunggu sekitar dua detik antarpemeriksaan dan patuhi jeda dari batas permintaan.
Konversi berhasil, berkas belum adaUnduh hasil, periksa image/svg+xml, tulis ke berkas sementara, lalu ubah namanya ke jalur akhir. Tandai catatan sebagai tersimpan setelah penggantian nama.
TersimpanLewati POST. Jika keluaran hilang, coba ambil hasil yang ada selama tautannya masih berfungsi.
Ditolak atau gagalCatat masalah HTTP atau kesalahan akhir konversi. Perbaiki masukan yang salah sebelum mencoba sebagai operasi baru.

Jika POST mendapat 429 atau 503, patuhi Retry-After dan coba lagi dengan gambar, opsi, dan kunci asli yang sama dalam 24 jam. Jika masalahnya too_many_in_flight, tunggu juga hingga konversi live yang aktif selesai. Jika sudah memiliki ID, cek ID itu sebelum mengirim ulang. Jika konversi berstatus akhir failed dengan timeout atau provider_unavailable, gunakan kunci baru bila ingin mencoba lagi. Untuk kasus kedua, tunggu layanan pulih. Jika waktu tunggu klien habis, hasil permintaan belum tentu diketahui. Gunakan ID atau ulangi dengan kunci asli dalam jangka yang berlaku. Kesalahan API PerfectVector

Saat dimulai ulang, proses pekerja bisa mengulang pengecekan atau unduhan tanpa memulai konversi baru. Unduh dan simpan setiap SVG yang berhasil sebelum pindah ke catatan berikutnya. Hasil API kedaluwarsa 24 jam setelah konversi selesai. Hasil dan unduhan PerfectVector

Gunakan pseudokode ini sebagai dasar implementasi dengan basis data dan klien HTTP Anda. Uji berikut mengasumsikan bahwa proses mencatat setiap permintaan dan bisa dijeda khusus untuk pengujian, tepat setelah menyimpan ID konversi kedua.

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

Uji mulai ulang dengan tiga berkas

Gunakan dua logo PNG kecil dan satu PNG rusak. Sengaja sertakan berkas rusak agar terlihat apakah antrean tetap berjalan setelah penolakan. Dengan kunci uji, dua berkas valid seharusnya mengembalikan SVG contoh. Berkas rusak seharusnya ditolak dan tidak menghasilkan apa pun di folder keluaran. Mode uji mengembalikan SVG contoh yang sama untuk kedua berkas valid. Mode uji PerfectVector

  1. Biarkan berkas pertama mencapai status saved. Jeda proses setelah ID berkas valid kedua tersimpan tetapi sebelum SVG-nya disimpan.
  2. Mulai ulang proses. Pastikan berkas pertama dilewati dan hasil kedua diunduh dengan ID yang sudah ada.
  3. Pastikan berkas rusak tercantum dalam laporan dengan kode masalah dan tidak memiliki keluaran SVG.
  4. Jalankan sekali lagi. Pastikan kedua hasil tetap ada dan tidak ada unggahan yang berhasil dikirim ulang.

Kami menguji mulai ulang dengan kunci uji API. Proses menyimpan dua SVG contoh, mencatat penolakan satu masukan rusak, dan melanjutkan berkas kedua dengan ID yang sudah ada. Proses terakhir tidak mengirim permintaan. Gunakan respons uji buatan untuk menguji status tertunda karena konversi uji langsung selesai.

Pertanyaan umum

Bisakah semua berkas dikirim dalam satu panggilan API?

PerfectVector API v1 menerima satu gambar per POST. Kirim setiap berkas dalam permintaan terpisah. Untuk mode live, patuhi batas jumlah konversi aktif dan tunggu konversi saat ini selesai sebelum mengirim berikutnya. Batas API PerfectVector

Bagaimana jika tautan SVG sudah kedaluwarsa?

Gunakan SVG yang sudah disimpan jika sempat mengunduhnya. Jika belum, cek status dan putuskan apakah perlu memulai operasi baru. Konversi live baru bisa memakai satu kredit lagi jika berhasil. Hasil dan unduhan PerfectVector

Sumber

  1. PerfectVector — Batas — Pemeriksaan berkas dan batas bawaan konversi bersamaan.
  2. PerfectVector — Idempotensi — Cakupan kunci, jangka pengulangan, dan masukan yang harus sama.
  3. PerfectVector — Waktu tunggu dan proses asinkron — Pengiriman asinkron dan pengecekan status.
  4. PerfectVector — Hasil — Unduhan, kegagalan, dan kedaluwarsa hasil.
  5. PerfectVector — Mode uji — Pemeriksaan unggahan dan keluaran yang bisa diuji.
  6. PerfectVector — Kesalahan — Jeda Retry-After, kegagalan akhir, dan kapan memakai kunci baru.

Ambil kunci uji melalui halaman API PerfectVector dan jalankan uji dengan tiga berkas Anda. Pastikan setiap catatan yang berhasil punya SVG di penyimpanan dan bahwa memulai ulang tidak mengirim kembali pekerjaan yang sudah selesai.

Lebih banyak dari blog

PerfectVector

Ubah gambar Anda menjadi
path vektor yang rapi dan dapat diedit

Vektorisasi dan periksa pratinjau secara gratis, tanpa batas harian.