PerfectVector
Por Jay

Vectorizar imágenes por lotes con una cola de API

Vectoriza imágenes por lotes con una API y una cola persistente. Guarda los ID, gestiona fallos y reanuda una ejecución sin volver a enviar trabajos completados.

8 min de lectura
En esta página

Para vectorizar imágenes por lotes con una API, registra cada archivo en una cola y guarda su progreso antes de pasar al siguiente. Con PerfectVector API v1, tu proceso gestiona el lote. La API admite una imagen por solicitud y, por defecto, una conversión en producción a la vez por cuenta. Límites de la API de PerfectVector

Pruébalo con tu propia imagen
Abrir la herramienta completa
Puedes probarlo gratis. Suelta una imagen y mira la vista previa de tu vector, sin registrarte.

Crea un registro en la cola para cada imagen

Empieza con una copia estable de cada original y una carpeta de salida independiente. Los ejemplos usan un solo proceso, una base local SQLite y una carpeta de PNG, JPEG o WebP de un solo fotograma. Comprueba los límites de archivos de la API antes de añadirlos a la cola. Usa rutas de salida únicas para que dos originales llamados logo.png no sobrescriban sus resultados.

Guarda juntos estos campos antes de intentar la primera subida.

CampoQué guardar
OrigenUna ruta estable o versión de objeto, y un hash de los datos originales.
Clave de solicitudUna clave de idempotencia que identifica los reenvíos de la operación. Registra cuándo intentas el primer POST.
ID de conversiónEl ID vec_… de la API, guardado en cuanto llega.
SalidaUn destino local único y el último estado confirmado del registro.
Detalles del falloEl código de problema de la API, el ID de solicitud o el error de conversión, si están disponibles.

Confirma el registro en la base de datos antes del POST. Si la API acepta la subida y se corta la conexión antes de recibir el ID, aún tienes la clave para repetirla. PerfectVector la reconoce durante 24 horas desde la primera solicitud en la misma cuenta y modo. Mantén los datos y las opciones al reenviar. Idempotencia de PerfectVector

Esquema del proceso
Un grupo de imágenes rasterizadas con etiquetas conduce a un registro de conversión guardado y después a un SVG. Una flecha lleva del reinicio al registro.
Guarda el ID de conversión antes de descargar. Si hay una interrupción, reanuda el trabajo con ese ID.

Envía, consulta y guarda un trabajo a la vez

Envía un POST multipart a /v1/vectorizations con la imagen en el campo image y el encabezado Idempotency-Key del registro. Usa Prefer: respond-async para que el envío sea breve. Guarda el ID de la respuesta antes de consultar el estado. Una respuesta 202 indica que la conversión está pendiente. Una respuesta 201 puede describir un éxito o un fallo. Lee el estado en el JSON. Espera y solicitudes asíncronas en PerfectVector

Este es el orden de decisiones del proceso. Un estado de cola como saved es una etiqueta propia. La API devuelve estados como processing y succeeded.

Registro guardadoSiguiente acción
Nuevo, con clave guardadaSube los datos originales y registra el ID de conversión devuelto.
Envío incierto, ID desconocidoReenvía los mismos datos con la clave guardada dentro del plazo. Si pasó el plazo, marca el registro para revisión antes de intentar una conversión nueva que podría cobrarse.
ID de conversión guardadoConsulta el ID existente. Espera unos dos segundos entre consultas y respeta las demoras por límites de solicitudes.
Conversión correcta, falta el archivoDescarga el resultado, comprueba image/svg+xml, escríbelo en un archivo temporal y renómbralo para moverlo al destino. Marca el registro como guardado después de renombrar.
GuardadoOmite el POST. Si falta el archivo, intenta recuperar el resultado existente mientras funcione el enlace.
Rechazado o fallidoRegistra el problema HTTP o el error final de conversión. Corrige la entrada antes de enviarla como una operación nueva.

Si un POST devuelve 429 o 503, respeta Retry-After y reintenta con la misma imagen, las mismas opciones y la clave original dentro de las 24 horas. Con too_many_in_flight, espera además a que termine la conversión en producción existente. Si tienes un ID, consúltalo antes de volver a enviar. Una conversión con estado final failed y error timeout o provider_unavailable necesita una clave nueva si decides reintentar. Si el proveedor no está disponible, espera a que se recupere. Cuando el cliente agota la espera, el estado del primer envío queda incierto. Usa el ID o repite la solicitud con su clave original dentro del plazo. Errores de la API de PerfectVector

Después de reiniciar, el proceso puede volver a consultar el estado o descargar un resultado sin iniciar otra conversión. Descarga y guarda cada SVG correcto antes de avanzar en la cola. Los resultados de la API caducan 24 horas después de completarse la conversión. Resultados y descargas de PerfectVector

Usa este pseudocódigo con tu base de datos y cliente HTTP. La prueba presupone que el proceso registra todas las solicitudes y puede pausar en modo de prueba justo después de confirmar el segundo ID de conversión.

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

Prueba el reinicio con tres archivos

Usa dos logotipos pequeños en PNG y un PNG dañado. Incluye el archivo dañado para comprobar si la cola avanza tras el rechazo. Con una clave de prueba, los dos archivos válidos deben devolver SVG de muestra. El archivo dañado debe fallar en la validación y quedar fuera de la carpeta de salida. El modo de prueba devuelve el mismo SVG para ambos archivos válidos. Modo de prueba de PerfectVector

  1. Deja que el primer archivo llegue a saved. Pausa el proceso después de guardar el ID del segundo archivo válido y antes de guardar su salida.
  2. Reinicia el proceso. Comprueba que omite el primer archivo y descarga el segundo con su ID de conversión existente.
  3. Confirma que el archivo dañado aparece en el informe de errores con su código y que no se escribió un SVG para él.
  4. Ejecuta el proceso otra vez. Confirma que los dos archivos guardados siguen en su sitio y que ninguno de sus envíos se repite.

Ejecutamos la prueba de reinicio con una clave de prueba de la API. Guardó dos SVG de muestra, registró un archivo dañado como rechazado y reanudó el segundo trabajo correcto mediante su ID existente. La última ejecución no hizo solicitudes. Usa una respuesta de prueba local para probar la ruta pendiente, pues las conversiones de prueba terminan al instante.

Preguntas frecuentes

¿Puedo enviar todos los archivos en una llamada a la API?

PerfectVector API v1 admite una imagen en cada POST. Envía el lote como una serie de solicitudes. En producción, respeta el límite de conversiones en curso por cuenta y espera a que termine la actual antes de enviar la siguiente. Límites de la API de PerfectVector

¿Qué pasa si el SVG ya caducó?

Usa la copia guardada si ya lo descargaste. Si no, consulta el estado y decide si iniciar una operación nueva. Una nueva conversión en producción puede consumir otro crédito si termina correctamente. Resultados y descargas de PerfectVector

Fuentes

  1. PerfectVector — Límites — Validación de archivos y límite predeterminado de simultaneidad por cuenta.
  2. PerfectVector — Idempotencia — Alcance de la clave, plazo y coincidencia de las entradas.
  3. PerfectVector — Espera y solicitudes asíncronas — Envíos asíncronos y consultas de estado.
  4. PerfectVector — Resultados — Descargas, fallos y caducidad del resultado.
  5. PerfectVector — Modo de prueba — Comprobaciones de subida y resultados con la clave de prueba.
  6. PerfectVector — Errores — Demoras de Retry-After, fallos definitivos y cuándo usar una nueva clave.

Consigue una clave de prueba en la página de la API de PerfectVector y haz una prueba con tres archivos propios. Comprueba que cada registro correcto tenga un SVG guardado y que el reinicio no vuelva a enviar los trabajos completados.

Más del blog

PerfectVector

Convierte tu imagen en
trazados vectoriales limpios y editables

Vectoriza y revisa la vista previa gratis, sin límite diario.