PerfectVector
Por Jay

Vetorizar imagens em lote com uma fila de API

Use uma API e uma fila persistente para vetorizar imagens em lote. Salve os IDs, trate falhas e retome um lote sem reenviar trabalhos concluídos.

8 min de leitura
Nesta página

Para vetorizar imagens em lote por API, coloque cada arquivo de origem em uma fila e salve seu progresso antes de passar ao próximo. Na API v1 do PerfectVector, seu processo é responsável pelo lote. Por padrão, a API aceita uma imagem por requisição e uma conversão em produção por vez em cada conta. Limites da API do PerfectVector

Experimente com a sua própria imagem
Abrir a ferramenta completa
Teste grátis. Solte uma imagem e veja a prévia do seu vetor, sem precisar criar conta.

Crie um registro na fila para cada imagem

Comece com uma cópia estável de cada origem e uma pasta separada para a saída. Os exemplos usam um processo, um banco SQLite local e uma pasta com PNG, JPEG ou WebP de quadro único. Confira os limites de arquivo da API antes de incluir arquivos na fila. Dê a cada saída um caminho único para que dois arquivos logo.png não sobrescrevam seus resultados.

Salve os campos a seguir juntos antes de tentar o primeiro upload.

CampoO que guardar
OrigemUm caminho estável ou uma versão do objeto e um hash dos dados originais.
Chave de requisiçãoUma chave de idempotência que identifica repetições da operação. Registre quando fez a primeira tentativa de POST.
ID de conversãoO ID vec_… da API, assim que chegar.
SaídaUm destino local exclusivo e o último estado confirmado na fila.
Detalhes da falhaO código de erro da API, o ID da requisição ou o erro da conversão, quando disponíveis.

Confirme o registro no banco antes de enviar o POST. Se a API aceitar o upload e a conexão cair antes de você receber o ID, ainda haverá uma chave para reutilizar. O PerfectVector reconhece essa chave por 24 horas após a primeira requisição na mesma conta e modo. Mantenha os dados e as opções iguais ao repetir. Idempotência no PerfectVector

Diagrama do fluxo
Um grupo identificado de imagens rasterizadas leva a um registro de conversão salvo e depois a um SVG. Uma seta liga o reinício ao registro salvo.
Salve o ID de conversão antes de baixar. Se houver uma interrupção, retome a partir desse ID.

Envie, consulte e salve um trabalho por vez

Envie um POST multipart a /v1/vectorizations com a imagem no campo image e o cabeçalho Idempotency-Key do registro. Use Prefer: respond-async para um envio breve. Salve o ID de uma resposta bem-sucedida antes de consultar o status. A resposta 202 indica que a conversão está pendente. A resposta 201 pode indicar sucesso ou falha. Leia o status no JSON. Espera e requisições assíncronas no PerfectVector

Esta é a sequência de decisões do processo. Um estado da fila como saved é um rótulo seu. A API retorna status como processing e succeeded.

Registro da fila em discoPróxima ação do processo
Novo, com a chave salvaEnvie os dados originais e registre o ID de conversão retornado.
Envio incerto, ID desconhecidoRepita o mesmo upload com a chave salva dentro do prazo. Se o prazo tiver passado, sinalize o registro para revisão antes de tentar uma nova conversão que possa ser cobrada.
ID de conversão salvoConsulte o ID existente. Espere cerca de dois segundos entre consultas e respeite os intervalos impostos pelos limites de requisições.
Conversão concluída, arquivo ausenteBaixe o resultado, confira image/svg+xml, grave em um arquivo temporário e renomeie para o destino. Marque como salvo depois de renomear.
SalvoPule o POST. Se a saída sumir, tente baixar o resultado existente enquanto o link estiver válido.
Rejeitado ou com falhaRegistre o problema HTTP ou o erro final da conversão. Corrija uma entrada inválida antes de enviá-la como nova operação.

Se o POST retornar 429 ou 503, respeite Retry-After e reenvie a mesma imagem com as mesmas opções e a chave original dentro das 24 horas. Em caso de too_many_in_flight, espere também a conversão em produção terminar. Se você tem um ID, consulte-o antes de reenviar. Uma conversão com estado final confirmado failed e erro timeout ou provider_unavailable exige outra chave se você decidir tentar de novo. Quando o prestador estiver indisponível, espere o serviço voltar. Se o cliente atingir o tempo limite, o resultado original será incerto. Use o ID ou repita a requisição com a chave original dentro do prazo. Erros da API do PerfectVector

Após reiniciar, o processo pode consultar o status ou baixar o resultado outra vez sem iniciar uma conversão. Baixe e guarde cada SVG bem-sucedido antes de avançar na fila. O resultado da API expira 24 horas após a conclusão. Resultados e downloads do PerfectVector

Use o pseudocódigo com seu banco e cliente HTTP. O teste pressupõe que o processo registra cada requisição e pode pausar em modo de teste logo depois de confirmar o segundo ID de conversão.

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

Teste o reinício com três arquivos

Use dois logos pequenos em PNG e um PNG danificado. Inclua o danificado para verificar se a fila avança após a rejeição. Com a chave de teste, os dois arquivos válidos devem retornar SVGs de exemplo. O arquivo danificado deve falhar na validação e ficar fora da pasta de saída. O modo de teste retorna o mesmo SVG para os dois arquivos válidos. Modo de teste do PerfectVector

  1. Deixe o primeiro arquivo chegar a saved. Pause o processo depois de gravar o ID do segundo arquivo válido e antes de salvar a saída.
  2. Reinicie o processo. Confirme que ele pula o primeiro arquivo e baixa o segundo com o ID de conversão existente.
  3. Confirme que o arquivo danificado aparece no relatório com seu código de erro e que nenhum SVG foi gravado para ele.
  4. Execute o processo outra vez. Confirme que os dois arquivos continuam salvos e que nenhum envio bem-sucedido foi repetido.

Rodamos o teste de reinício com uma chave de teste da API. O processo salvou dois SVGs de exemplo, registrou a rejeição de um arquivo danificado e retomou a segunda conversão bem-sucedida com o ID existente. A última execução não fez requisições. Use uma resposta simulada localmente para testar a condição pendente, pois as conversões de teste terminam na hora.

Perguntas frequentes

Posso enviar todos os arquivos em uma chamada à API?

A API v1 do PerfectVector aceita uma imagem por POST. Envie um lote como uma série de requisições separadas. Em produção, respeite o limite da conta e espere a conversão atual terminar antes de enviar a próxima. Limites da API do PerfectVector

E se o SVG já tiver expirado?

Use a cópia que salvou se já tiver baixado. Caso contrário, confira o status e decida se deve iniciar outra operação. Uma nova conversão em produção pode usar outro crédito se terminar com sucesso. Resultados e downloads do PerfectVector

Fontes

  1. PerfectVector — Limites — Validação de arquivos e limite padrão de simultaneidade por conta.
  2. PerfectVector — Idempotência — Escopo da chave, prazo de repetição e dados idênticos.
  3. PerfectVector — Espera e requisições assíncronas — Envio assíncrono e consultas de status.
  4. PerfectVector — Resultados — Download, falhas e expiração do resultado.
  5. PerfectVector — Modo de teste — Validações de upload e resultados verificáveis com a chave de teste.
  6. PerfectVector — Erros — Intervalos de Retry-After, falhas definitivas e uso de uma nova chave.

Obtenha uma chave de teste pela página da API do PerfectVector e faça um teste com três arquivos seus. Confira se cada registro bem-sucedido tem um SVG em disco e se o reinício não reenvia trabalhos concluídos.

Mais do blog

PerfectVector

Transforme sua imagem em
caminhos vetoriais limpos e editáveis

Vetorize e confira a visualização grátis, sem limite diário.