Lumaktaw sa pangunahing nilalaman

Meshy API Webhooks vs Polling: Kailan Handa ang mga Resulta

Meshy API Webhooks vs Polling: Katayuan ng Gawain

Talaan ng mga Nilalaman

Ang mga generation task ng Meshy API (Text to 3D, Image to 3D, Rigging, at iba pa) ay tumatakbo nang asynchronous — nagpapasa ka ng task at pagkatapos ay kailangang malaman kung kailan ito tapos bago kunin ang resulta. Ipapaliwanag ng artikulong ito ang task lifecycle at ang dalawang sinusuportahang paraan para malaman kung kailan natapos ang isang task: polling at webhooks — pati na rin kung paano iwasan ang pinakakaraniwang isyu na "errors retrieving the model".

Task lifecycle

Bawat generation task ay dumadaan sa isang maliit na hanay ng mga estado, na ibinabalik sa status field ng task object:

  • PENDING — naka-queue na ang task pero hindi pa nagsisimula ang pagproseso.

  • IN_PROGRESS — aktwal na pinoproseso ang task. Ang progress field (0-100) ay tumaas habang nagpapatuloy ang trabaho.

  • SUCCEEDED — matagumpay na natapos ang task at ang progress ay 100. available na ngayon ang mga result URL (model files, textures, previews) sa response.

  • FAILED — hindi natapos ang task. Automatic na naire-refund ang credits para sa mga nabigong task.

  • CANCELED — na-cancel ang task bago ito natapos.

Ang pinakamahalagang tuntunin kapag nag-i-integrate sa API: huwag subukang kunin o gamitin ang mga result URL hangga't ang status ng task ay hindi pa SUCCEEDED. Ang pagbasa ng mga result habang PENDING o IN_PROGRESS pa ang task ang pinakakaraniwang sanha ng mga ulat na "errors retrieving the model".

Polling sample

Ang polling ay nangangahulugang paulit-ulit na pagtawag sa "get task" endpoint para sa iyong task ID hanggang maabot nito ang isang terminal state (SUCCEEDED, FAILED, o CANCELED). Ganito ang hitsura ng isang simpleng polling loop:

  • Ipasa ang generation request at i-store ang ibinalik na task id.

  • Tawagin ang kaukulang "retrieve task" endpoint (halimbawa, ang Text to 3D o Image to 3D task-by-id endpoint) sa isang agwat — ilang segondo ang karaniwan.

  • Tingnan ang status field sa bawat response. Patuloy na mag-poll habang PENDING o IN_PROGRESS ito.

  • Itigil ang polling sa sandaling ang status ay SUCCEEDED (basahin ang mga result URL), FAILED, o CANCELED.

  • Magdagdag ng makatwirang timeout/max-attempts guard sa iyong client upang hindi mag-poll magpakailanman ang isang naiwang task.

Ang polling ay simple at gumagana nang maayos para sa mga script, batch job, at mababang-volume na integration. Para sa mataas na volume o latency-sensitive na mga integration, ang webhook ay karaniwang mas angkop.

Webhook setup

Sa halip na paulit-ulit na itanong na "tapos na ba ito?", maaari mong hilingin sa Meshy na i-notify ang iyong server sa sandaling matapos ang isang task. Para gumamit ng webhooks:

  • I-configure ang isang webhook (callback) URL na maabot ng Meshy — karaniwang itinatakda ito sa antas ng account/API settings o ipinapasa bilang parameter sa generation request, depende sa endpoint.

  • Siguraduhing publicly reachable ang iyong endpoint sa pamamagitan ng HTTPS at kumakasa ito nang mabilis (magbalik agad ng 2xx status, pagkatapos ay iproseso nang asynchronous ang payload).

  • Kapag naabot ng task ang isang terminal state, nagpapadala ang Meshy ng payload sa iyong endpoint na naglalaman ng task id at ang pinal nitong status.

  • Sa pagkatanggap, hanapin ang buong detalye ng task gamit ang id sa pamamagitan ng API sa halip na magtiwala lamang sa webhook body, upang masiguro na mayroon kang awtoritatibo at napapanahong resulta.

Binabawasan ng mga webhook ang mga di-kailangang API call at nagbibigay ng halos instant na notification, ngunit dapat ka pa ring magpanatili ng pana-panahong polling fallback para sa mga task kung saan maaaring ma-miss o madeley ang webhook delivery (hal. dahil sa pansamantalang network issue sa iyong panig).

Idempotency

Anuman ang gamitin mo — polling o webhooks — ang iyong result-handling code ay dapat idempotent — ligtas itong patakbuhin nang higit sa isang beses para sa parehong task nang walang side effects. Mahalaga ito dahil:

  • Maaaring i-deliver nang higit sa isang beses ang isang webhook para sa parehong task (mga retry sa panig ng sender, network duplication, atbp.).

  • Maaaring sabay na subukang i-proseso ng isang polling loop at ng isang webhook handler ang parehong natapos na task kung pareho silang tumatakbo.

Para mapanatiling idempotent, gawing basehan ng iyong processing logic ang task id — halimbawa, tingnan muna kung naka-store/na-download mo na ang mga resulta para sa id na iyon bago ito ulitin, at gawing isang atomic step ang "mark as processed" sa iyong sariling database.

status = SUCCEEDED

Ang response na may "status": "SUCCEEDED" at "progress": 100 ang tanging senyales na garantisadong kumpleto at ligtas nang gamitin ang result payload (model URLs, textures, thumbnails). Sa konkreto, sa iyong code:

  • I-verify na status === "SUCCEEDED" bago magbasa ng anuman mula sa mga result/model URL field.

  • Huwag umasa sa progress lamang — laging tingnan din ang status, dahil maaaring pansamantalang magpakita ang progress ng mataas na halaga bago ganap na ma-finalize ang task.

  • I-download agad ang mga result file kapag SUCCEEDED na — ang mga generated asset ay pinapanatili lamang sa mga server ng Meshy sa loob ng limitadong panahon, pagkatapos nito ay hindi na magre-resolve ang mga URL.

Common errors

Karamihan sa mga ulat na "hindi ko ma-retrieve ang model ko" ay nauuwi sa isa sa mga sanhang ito:

  • Pagkuha nang masyadong maaga. Pagtawag sa result URL, o pagbasa ng mga model field, bago pa maging SUCCEEDED ang status. Ito ang pinakamadalas na sanha sa lahat.

  • Expired na mga asset. Paghihintay nang masyadong matagal pagkatapos ng SUCCEEDED bago mag-download — tumitigil ang paggana ng mga result URL pagkatapos ng retention window para sa uri ng task na iyon.

  • Paggamit ng stale o maling task ID — halimbawa, muling paggamit ng ID mula sa naunang, magkaibang request.

  • Pagturing sa FAILED bilang pansamantalang estado at pagpapatuloy ng pag-poll sa isang task na nabigo na sana sa halip na muling magpasa.

  • Mga network/timeout issue sa pagitan ng iyong server at Meshy na nabibigyang-mali ng kahulugan bilang problema sa generation.

Retries

Kung hindi nakasalalay sa iyong inaasahan ang isang generation, o bumigo nang tuluyan ang isang request, tandaan ang mga sumusunod:

  • Kasalukuyang hindi sinusuportahan ng Meshy API ang pag-retry ng isang umiiral na task nang in-place — para subukang muli, magpasa ng bagong generation request, na normal na gagamit ng credits.

  • Para sa mga pansamantalang network failure kapag tumatawag sa API (mga timeout, 5xx responses), makatuwiran ang maikling exponential backoff bago muling isumite ang request.

  • Para sa polling mismo, i-retry ang "get task" call sa mga pansamantalang network error, ngunit huwag ituring na generation failure ang isang beses na pagbigong poll — magtiwala lamang sa status field kapag nakatanggap ka na ng matagumpay na response.

  • Kung kailangan mo ng built-in na retry functionality para sa mga generation, makipag-ugnayan sa sales team ng Meshy tungkol sa mga enterprise plan option.

FAQ

1. Bakit consistent akong nakakakuha ng mga error kapag kumukuha ng mga model mula sa generation result sa pamamagitan ng API?

Halos palaging nangyayari ito dahil sinusubukan ng code na basahin ang resulta bago pa natatapos ang task. Laging kumpirmahing SUCCEEDED ang status (at 100 ang progress) bago kunin ang mga model URL.

2. Dapat ba akong gumamit ng polling o webhooks?

Ang polling ay mas simple ang setup at sapat na para sa mababang volume o one-off na mga script. Mas mainam ang webhooks para sa mga production integration na maraming sabay-sabay na task, dahil iniiwasan nila ang mga di-kailangang paulit-ulit na request agad kang nire-notify kapag natapos ang isang task.

3. Ano ang dapat gawin ng server ko kung tumanggap ito ng parehong webhook nang dalawang beses?

I-handle ito nang idempotent — tingnan ang task id laban sa mga naproseso mo na, at laktawan ang muling pagproseso kung na-handle na ito.

4. Hindi dumating ang webhook ko — ano ang dapat kong gawin?

Bumalik sa pag-poll ng task nang direkta gamit ang id. Kumpirmahin din na publicly reachable ang iyong endpoint sa pamamagitan ng HTTPS at bumabalik ito nang mabilis na 2xx response, dahil ang mabagal o hindi maabot na mga endpoint ay maaaring magsanhi ng mga isyu sa delivery.

5. Maaari ko bang i-retry ang isang nabigong o hindi kasiya-siyang generation nang direkta sa pamamagitan ng API?

Hindi pa sa kasalukuyan — kailangan mong magpasa ng bagong generation request, na normal na gagamit ng credits. Makipag-ugnayan sa sales tungkol sa mga enterprise option kung kailangan mo ng built-in na retry support.

6. Gaano katagal ako may oras para i-download ang mga resulta ko pagkatapos maging SUCCEEDED ang status?

Pinapanatili lamang ang mga result file sa mga server ng Meshy sa loob ng limitadong panahon pagkatapos matapos ang isang task, kaya i-download ang mga output sa iyong sariling storage sa lalong madaling panahon kapag matagumpay ang task sa halip na maghintay.

Mga Kaugnay na Artikulo


Kaugnay na mga Artikulo

Nasagot ba nito ang iyong tanong?