Vector hóa ảnh hàng loạt qua API với hàng đợi nối lại
Vector hóa ảnh hàng loạt bằng API với hàng đợi lưu bền vững. Lưu ID chuyển đổi, xử lý tệp lỗi và tiếp tục mà không gửi lại phần đã xong.
Trên trang này
Để vector hóa ảnh hàng loạt qua API, đưa mỗi tệp nguồn vào hàng đợi và lưu tiến độ trước khi sang tệp tiếp theo. Với PerfectVector API v1, chương trình xử lý của bạn quản lý đợt chạy. API nhận một ảnh mỗi yêu cầu và mặc định cho mỗi tài khoản thực hiện một lượt chuyển đổi thực tế tại một thời điểm. Giới hạn PerfectVector API
Tạo một bản ghi hàng đợi cho mỗi ảnh
Bắt đầu với bản sao cố định của từng ảnh nguồn và một thư mục riêng cho đầu ra. Ví dụ giả định một chương trình xử lý, cơ sở dữ liệu SQLite cục bộ và thư mục chứa PNG, JPEG hoặc WebP một khung hình. Kiểm tra giới hạn tệp của API trước khi thêm tệp. Dùng đường dẫn đầu ra riêng để hai tệp nguồn cùng tên logo.png không ghi đè lên nhau.
Lưu cùng lúc các trường sau trước khi thử tải lên lần đầu.
| Trường | Dữ liệu cần lưu |
|---|---|
| Nguồn | Đường dẫn cố định hoặc phiên bản đối tượng và giá trị băm của dữ liệu gốc. |
| Khóa yêu cầu | Khóa chống gửi trùng (idempotency key) dùng để nhận biết các lượt gửi lại cùng thao tác. Ghi thời điểm thử POST đầu tiên. |
| ID chuyển đổi | ID dạng vec_… của API. Lưu ngay khi nhận. |
| Đầu ra | Đích cục bộ riêng và trạng thái hàng đợi mới nhất đã xác nhận. |
| Chi tiết lỗi | Mã lỗi API, ID yêu cầu hoặc lỗi chuyển đổi nếu có. |
Ghi và xác nhận bản ghi trong cơ sở dữ liệu trước khi gửi POST. Nếu API nhận tệp nhưng kết nối ngắt trước khi bạn nhận ID, bạn vẫn có khóa để dùng lại. PerfectVector nhận diện khóa đó trong vòng 24 giờ kể từ yêu cầu đầu tiên trong cùng tài khoản và chế độ. Khi gửi lại, giữ nguyên dữ liệu ảnh và tùy chọn. Chống gửi trùng trong PerfectVector

Gửi, kiểm tra trạng thái và lưu từng tác vụ
Gửi POST multipart đến /v1/vectorizations, đưa ảnh vào trường image và khóa của dòng vào phần đầu Idempotency-Key. Dùng Prefer: respond-async để yêu cầu gửi hoàn tất nhanh. Lưu ID từ phản hồi thành công trước khi kiểm tra trạng thái. Phản hồi 202 nghĩa là đang chờ xử lý. Phản hồi 201 có thể mô tả cả chuyển đổi thành công lẫn thất bại, nên hãy đọc trạng thái trong JSON. Chờ và xử lý bất đồng bộ trong PerfectVector
Bảng sau nêu thứ tự quyết định của chương trình xử lý. Trạng thái hàng đợi như saved là nhãn do bạn đặt. API trả trạng thái như processing và succeeded.
| Bản ghi hàng đợi trên đĩa | Việc cần làm tiếp |
|---|---|
| Mới và đã lưu khóa | Tải dữ liệu gốc lên và ghi ID chuyển đổi trả về. |
| Chưa rõ đã gửi thành công, chưa biết ID | Gửi lại đúng tệp với khóa đã lưu trong khoảng cho phép. Nếu đã quá hạn, đánh dấu dòng để kiểm tra trước khi bắt đầu một lần chuyển đổi mới có thể mất lượt. |
| Đã lưu ID chuyển đổi | Kiểm tra trạng thái ID hiện có. Chờ khoảng hai giây giữa các lần kiểm tra và tuân theo thời gian chờ của giới hạn tần suất. |
| Chuyển đổi thành công nhưng thiếu tệp | Tải kết quả, kiểm tra image/svg+xml, ghi vào tệp tạm rồi đổi tên thành đích chính thức. Sau đó đánh dấu đã lưu. |
| Đã lưu | Bỏ qua POST. Nếu tệp bị mất, thử lấy kết quả hiện có khi liên kết còn dùng được. |
| Bị từ chối hoặc thất bại | Ghi lỗi HTTP hoặc lỗi chuyển đổi cuối cùng. Sửa đầu vào trước khi thử như một thao tác mới. |
Nếu POST trả 429 hoặc 503, làm theo Retry-After và dùng lại đúng ảnh, tùy chọn, khóa trong vòng 24 giờ. Nếu mã là too_many_in_flight, chờ lần chuyển đổi thực tế đang chạy kết thúc. Khi đã có ID, kiểm tra ID trước khi gửi lại. Nếu đã xác nhận trạng thái cuối là failed với timeout hoặc provider_unavailable, hãy dùng khóa mới nếu muốn thử lại. Nếu nhà cung cấp tạm ngừng, chờ dịch vụ khôi phục. Máy khách hết thời gian chờ thì kết quả ban đầu chưa rõ, vì vậy hãy dùng ID hoặc gửi lại với khóa cũ trong khoảng cho phép. Lỗi PerfectVector API
Khi khởi động lại, chương trình có thể kiểm tra trạng thái hoặc tải kết quả lần nữa mà không bắt đầu lần chuyển đổi mới. Tải và lưu từng SVG thành công trước khi sang mục tiếp theo. Kết quả API hết hạn sau 24 giờ kể từ khi chuyển đổi hoàn tất. Kết quả và tải xuống PerfectVector
Dùng mã giả dưới đây để triển khai với cơ sở dữ liệu và máy khách HTTP của bạn. Phép thử bên dưới giả định chương trình ghi nhật ký mỗi yêu cầu và có điểm tạm dừng dành riêng cho thử nghiệm ngay sau khi xác nhận lưu ID chuyển đổi thứ hai.
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 stateThử khởi động lại với ba tệp
Dùng hai logo PNG nhỏ và một PNG bị hỏng. Cố tình giữ tệp hỏng trong bộ thử để xem hàng đợi có đi tiếp sau khi một tệp bị từ chối không. Với khóa thử nghiệm, hai tệp hợp lệ phải trả SVG mẫu. Tệp tải lên bị hỏng phải trượt bước kiểm tra và không sinh tệp trong thư mục đầu ra. Chế độ thử nghiệm trả cùng một SVG mẫu cho cả hai tệp hợp lệ. Chế độ thử nghiệm PerfectVector
- Để tệp đầu tiên đạt
saved. Tạm dừng chương trình sau khi ghi ID của tệp hợp lệ thứ hai, trước khi lưu kết quả. - Khởi động lại. Xác nhận chương trình bỏ qua tệp đầu và tải tệp thứ hai bằng ID đã có.
- Xác nhận tệp hỏng xuất hiện trong báo cáo lỗi kèm mã và không có SVG được ghi cho tệp đó.
- Chạy lại lần nữa. Kiểm tra cả hai tệp đã lưu vẫn còn và không có lượt tải lên thành công nào bị gửi lại.
Chúng tôi thử khởi động lại với API bằng khóa thử nghiệm. Chương trình lưu hai SVG mẫu, ghi một đầu vào hỏng là bị từ chối và tiếp tục tệp thành công thứ hai bằng ID hiện có. Lượt chạy cuối không gửi yêu cầu nào. Chế độ thử nghiệm hoàn tất ngay, nên dùng phản hồi giả lập để kiểm tra nhánh chờ.
Câu hỏi thường gặp
Có thể gửi mọi tệp trong một lần gọi API không?
PerfectVector API v1 nhận một ảnh mỗi POST. Gửi một đợt dưới dạng nhiều yêu cầu riêng. Với chế độ thực, giữ đúng giới hạn tác vụ đồng thời của tài khoản và đợi lần chuyển đổi hiện tại xong trước khi gửi lần tiếp theo. Giới hạn PerfectVector API
Nếu SVG đã hết hạn thì sao?
Nếu đã tải về, dùng bản SVG lưu trước đó. Nếu chưa, kiểm tra trạng thái rồi quyết định có bắt đầu lần chuyển đổi mới không. Một lần chuyển đổi thực tế mới có thể mất thêm một lượt nếu thành công. Kết quả và tải xuống PerfectVector
Nguồn tham khảo
- PerfectVector — Giới hạn — Kiểm tra tệp và số tác vụ đồng thời mặc định trên tài khoản.
- PerfectVector — Chống gửi trùng — Phạm vi khóa, khoảng cho phép gửi lại và yêu cầu giữ nguyên đầu vào.
- PerfectVector — Chờ và xử lý bất đồng bộ — Gửi bất đồng bộ và kiểm tra trạng thái.
- PerfectVector — Kết quả — Tải xuống, lỗi và thời hạn kết quả.
- PerfectVector — Chế độ thử nghiệm — Kiểm tra tệp tải lên và những kết quả có thể xác minh bằng khóa thử nghiệm.
- PerfectVector — Lỗi — Khoảng chờ Retry-After, lỗi cuối cùng và khi nào cần khóa mới.
Lấy khóa thử nghiệm từ trang PerfectVector API rồi chạy thử với ba tệp của bạn. Kiểm tra mỗi dòng thành công có SVG trên đĩa và khi khởi động lại không dòng đã hoàn tất nào bị gửi lại.
Thêm từ blog
Chuyển đổi hàng loạt PNG2SVG: Kiểm tra ZIP tải về
Thực hiện chuyển đổi PNG2SVG gồm hai tệp, tải xuống SVG ZIP và xác minh tên tệp cũng như nội dung đường dẫn thực tế trước khi tin cậy vào một loạt tác phẩm nghệ thuật lớn hơn của riêng bạn.
Chuyển cả thư mục ảnh sang SVG bằng Claude Code
Lập kế hoạch chuyển cả thư mục sang SVG bằng Claude Code và PerfectVector MCP. Đặt đường dẫn riêng cho mỗi ảnh rồi kiểm tra SVG bị thiếu ngay trên máy.


