PerfectVector
Autor: Jay

Wsadowa wektoryzacja obrazów przez API z kolejką

Wektoryzuj obrazy przez API z trwałą kolejką. Zapisuj identyfikatory, obsługuj błędy i wznawiaj pracę bez ponownego przesyłania ukończonych plików.

7 min czytania
Na tej stronie

Aby wektoryzować obrazy wsadowo przez API, umieść każdy plik źródłowy w kolejce i zapisz jego stan przed przejściem do kolejnego. W PerfectVector API v1 kolejką zarządza Twój proces roboczy. API przyjmuje jeden obraz na żądanie i domyślnie dopuszcza jedną aktywną konwersję produkcyjną na konto. Limity PerfectVector API

Wypróbuj na własnym obrazie
Otwórz pełne narzędzie
Za darmo i bez rejestracji: upuść obraz, aby zobaczyć podgląd swojego wektora.

Utwórz jeden wpis kolejki na obraz

Zachowaj stałą kopię każdego pliku źródłowego i przygotuj oddzielny folder wynikowy. Przykłady zakładają jeden proces roboczy, lokalną bazę SQLite i folder z jednoklatkowymi plikami PNG, JPEG lub WebP. Przed dodaniem plików do kolejki sprawdź limity plików API. Użyj unikalnych ścieżek wynikowych, aby dwa pliki o nazwie logo.png nie nadpisały się nawzajem.

Przed pierwszą próbą przesłania zapisz razem poniższe pola.

PoleCo zachować
ŹródłoStałą ścieżkę lub wersję obiektu oraz skrót oryginalnych bajtów.
Klucz żądaniaKlucz idempotencji identyfikujący ponowienia tej operacji. Zapisz czas pierwszej próby POST.
Identyfikator konwersjiIdentyfikator API vec_…, zapisany od razu po odebraniu.
WynikUnikalną lokalną ścieżkę i ostatni potwierdzony stan w kolejce.
Szczegóły błęduKod problemu API, identyfikator żądania lub błąd konwersji, jeśli są dostępne.

Zatwierdź zapis w kolejce przed wysłaniem POST. Jeśli API przyjmie plik, ale połączenie zerwie się przed odebraniem identyfikatora, nadal masz klucz do ponowienia. PerfectVector rozpoznaje go przez 24 godziny od pierwszego żądania na tym samym koncie i w tym samym trybie. Przy powtórzeniu użyj tych samych bajtów i opcji. Idempotencja PerfectVector

Schemat pracy kolejki
Stos obrazów rastrowych z etykietą prowadzi do zapisanego wpisu konwersji, a następnie do pliku SVG. Strzałka od ponownego uruchomienia wskazuje zapisany wpis.
Zapisz identyfikator konwersji przed pobraniem. Po przerwie wznów pracę na podstawie zapisanego identyfikatora.

Wysyłaj, sprawdzaj i zapisuj po jednym zadaniu

Wyślij żądanie POST typu multipart do /v1/vectorizations z obrazem w polu image i kluczem z kolejki w nagłówku Idempotency-Key. Użyj Prefer: respond-async, aby szybko otrzymać odpowiedź. Zapisz identyfikator z poprawnej odpowiedzi przed sprawdzaniem stanu. Odpowiedź 202 oznacza, że konwersja jeszcze trwa. Odpowiedź 201 może oznaczać konwersję udaną lub nieudaną, więc odczytaj stan z JSON. Oczekiwanie i tryb asynchroniczny w PerfectVector

Poniżej podano działania procesu roboczego. Stan kolejki, np. saved, to etykieta Twojej aplikacji. API zwraca stany takie jak processing i succeeded.

Wpis kolejki na dyskuKolejne działanie procesu
Nowy, z zapisanym kluczemPrześlij oryginalne bajty i zapisz odebrany identyfikator konwersji.
Wynik przesłania nieznany, brak identyfikatoraPonów przesłanie z zachowanym kluczem w dozwolonym czasie. Po upływie tego czasu oznacz wpis do sprawdzenia przed uruchomieniem nowej, potencjalnie płatnej konwersji.
Identyfikator konwersji zapisanySprawdzaj stan istniejącej konwersji. Odczekaj około dwóch sekund między żądaniami i przestrzegaj limitów częstotliwości.
Konwersja udana, brak plikuPobierz wynik, sprawdź image/svg+xml, zapisz plik tymczasowy i zmień jego nazwę na docelową. Następnie oznacz wpis jako zapisany.
Wynik zapisanyPomiń POST. Jeśli brakuje wyniku, spróbuj go pobrać, dopóki link działa.
Żądanie odrzucone lub konwersja nieudanaZapisz problem HTTP lub końcowy błąd konwersji. Popraw wadliwy plik przed wysłaniem jako nowej operacji.

Przy odpowiedzi 429 lub 503 uwzględnij Retry-After i ponów żądanie z tym samym plikiem, opcjami i kluczem w ciągu 24 godzin. Jeśli wystąpi too_many_in_flight, poczekaj też na zakończenie aktywnej konwersji. Jeśli masz identyfikator, sprawdź go przed ponownym przesłaniem. Po potwierdzonym końcowym stanie failed z powodu timeout lub provider_unavailable do nowej próby potrzebny jest nowy klucz. Jeśli usługa jest niedostępna, zaczekaj na jej powrót. Po przekroczeniu limitu czasu po stronie klienta stan pozostaje niepewny. Sprawdź identyfikator lub ponów z pierwotnym kluczem w dozwolonym czasie. Błędy PerfectVector API

Ponownie uruchomiony proces może sprawdzić stan lub pobrać wynik bez rozpoczynania nowej konwersji. Pobierz i zapisz każdy udany SVG przed przejściem dalej. Wynik wygasa po 24 godzinach od zakończenia konwersji. Wyniki i pobieranie w PerfectVector

Dostosuj pseudokod do swojej bazy i klienta HTTP. Poniższa próba zakłada, że proces zapisuje wszystkie żądania i może zatrzymać się w teście zaraz po zapisaniu drugiego identyfikatora.

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

Sprawdź ponowne uruchomienie na trzech plikach

Użyj dwóch małych logo w PNG i jednego uszkodzonego PNG. Celowo zostaw uszkodzony plik, aby sprawdzić, czy kolejka działa dalej po odrzuceniu. Z kluczem testowym oba poprawne pliki powinny zwrócić przykładowe SVG. Uszkodzony plik nie powinien przejść walidacji ani trafić do folderu wynikowego. W trybie testowym oba poprawne pliki dają ten sam przykładowy SVG. Tryb testowy PerfectVector

  1. Poczekaj na stan saved pierwszego pliku. Zatrzymaj proces po zapisaniu identyfikatora drugiego poprawnego pliku, przed zapisaniem wyniku.
  2. Uruchom proces ponownie. Sprawdź, czy pomija pierwszy plik i pobiera drugi po istniejącym identyfikatorze.
  3. Sprawdź, czy uszkodzony plik widnieje w raporcie z kodem problemu i czy nie zapisano dla niego SVG.
  4. Uruchom proces jeszcze raz. Oba pliki powinny zostać na miejscu, bez ponownego wysyłania któregokolwiek z udanych żądań.

Przeprowadziliśmy próbę z kluczem testowym API. Proces zapisał dwa przykładowe SVG, odnotował odrzucenie uszkodzonego pliku i dokończył drugi poprawny plik po zapisanym identyfikatorze. Ostatni przebieg nie wysłał żadnego żądania. Konwersje testowe kończą się od razu, więc do sprawdzenia ścieżki oczekiwania użyj lokalnej odpowiedzi testowej.

Najczęstsze pytania

Czy mogę wysłać wszystkie pliki w jednym żądaniu API?

PerfectVector API v1 przyjmuje jeden obraz na żądanie POST. Prześlij partię jako osobne żądania. W trybie produkcyjnym przestrzegaj limitu aktywnych konwersji na koncie i czekaj na zakończenie bieżącej przed wysłaniem kolejnej. Limity PerfectVector API

Użyj pliku SVG zapisanego wcześniej. Jeśli go nie masz, sprawdź stan konwersji i zdecyduj, czy rozpocząć nową operację. Udana konwersja produkcyjna może kosztować kolejny kredyt. Wyniki i pobieranie w PerfectVector

Źródła

  1. PerfectVector — limity — sprawdzanie plików i domyślna liczba równoczesnych konwersji.
  2. PerfectVector — idempotencja — zakres klucza, czas ponowienia i zgodność danych wejściowych.
  3. PerfectVector — oczekiwanie i tryb asynchroniczny — wysyłanie zadań i sprawdzanie ich stanu.
  4. PerfectVector — wyniki — pobieranie, błędy i wygaśnięcie wyników.
  5. PerfectVector — tryb testowy — walidacja i wyniki dostępne z kluczem testowym.
  6. PerfectVector — błędy — opóźnienia Retry-After, błędy końcowe i zastosowanie nowego klucza.

Pobierz klucz testowy na stronie PerfectVector API i przeprowadź próbę na trzech własnych plikach. Sprawdź, czy każdy udany wpis ma SVG na dysku i czy po wznowieniu gotowe pliki nie są wysyłane ponownie.

Więcej z bloga

PerfectVector

Zamień obraz w
czyste, edytowalne ścieżki wektorowe

Wektoryzuj i sprawdzaj podgląd za darmo, bez dziennego limitu.