Meshy API üretim görevleri (Text to 3D, Image to 3D, Rigging ve daha fazlası) asenkron olarak çalışır — bir görev gönderirsiniz ve sonucu almaya çalışmadan önce görevin ne zaman tamamlandığını öğrenmeniz gerekir. Bu makale, görev yaşam döngüsünü ve bir görevin ne zaman bittiğini öğrenmenin iki desteklenen yolunu açıklar: polling ve webhook — ayrıca en yaygın "model alınırken hata oluştu" sorunundan nasıl kaçınılacağını da açıklar.
Görev yaşam döngüsü
Her üretim görevi, küçük bir durum kümesinden geçer ve görev nesnesinin status alanında döndürülür:
PENDING— görev sıraya alındı ancak işleme henüz başlamadı.IN_PROGRESS— görev aktif olarak işleniyor.progressalanı (0-100) iş tamamlandıkça artar.SUCCEEDED— görev başarıyla tamamlandı veprogress100'dür. Sonuç URL'leri (model dosyaları, dokular, önizlemeler) artık yanıtta mevcuttur.FAILED— görev tamamlanamadı. Başarısız görevlerin kredileri otomatik olarak iade edilir.CANCELED— görev tamamlanmadan iptal edildi.
API ile entegrasyon yaparken en önemli kural: görevin status değeri SUCCEEDED olana kadar asla sonuç URL'lerini getirmeyi veya kullanmayı denemeyin. Görev hâlâ PENDING veya IN_PROGRESS durumundayken sonuçları okumak, "model alınırken hata oluştu" bildirimlerinin en yaygın nedenidir.
Polling örneği
Polling, görev kimliğiniz için "görevi getir" (get task) uç noktasını, bir son duruma (SUCCEEDED, FAILED veya CANCELED) ulaşana kadar tekrar tekrar çağırmak anlamına gelir. Basit bir polling döngüsü şöyle görünür:
Üretim isteğini gönderin ve döndürülen görev
iddeğerini saklayın.İlgili "görevi al" (retrieve task) uç noktasını (örneğin, Text to 3D veya Image to 3D task-by-id uç noktası) belirli aralıklarla çağırın — birkaç saniye tipik bir aralıktır.
Her yanıtta
statusalanını kontrol edin. DurumPENDINGveyaIN_PROGRESSolduğu sürece polling'e devam edin.statusdeğeriSUCCEEDED(sonuç URL'lerini okuyun),FAILEDveyaCANCELEDolur olmaz polling'i durdurun.Takılı kalmış bir görevin sonsuza kadar polling yapmaması için istemcinize makul bir zaman aşımı/maksimum deneme sayısı sınırı ekleyin.
Polling basittir ve betikler, toplu işler ve düşük hacimli entegrasyonlar için iyi çalışır. Yüksek hacimli veya gecikmeye duyarlı entegrasyonlar için webhook genellikle daha uygundur.
Webhook kurulumu
"Bitti mi?" diye tekrar tekrar sormak yerine, Meshy'den bir görev bittiği anda sunucunuzu bilgilendirmesini isteyebilirsiniz. Webhook'ları kullanmak için:
Meshy'nin erişebileceği bir webhook (geri çağırma) URL'si yapılandırın — bu genellikle hesap/API ayarları düzeyinde ayarlanır veya uç noktaya bağlı olarak üretim isteğinde bir parametre olarak iletilir.
Uç noktanızın HTTPS üzerinden herkese açık şekilde erişilebilir olduğundan ve hızlı yanıt verdiğından emin olun (hemen bir 2xx durum kodu döndürün, ardından yükü asenkron olarak işleyin).
Görev bir son duruma ulaştığında, Meshy uç noktanıza görev
iddeğerini ve nihaistatusdeğerini içeren bir yük gönderir.Yükü aldıktan sonra, yalnızca webhook gövdesine güvenmek yerine API üzerinden
idkullanarak görevin tam ayrıntılarını sorgulayın; böylece yetkili ve güncel sonuca sahip olduğunuzdan emin olursunuz.
Webhook'lar gereksiz API çağrılarını azaltır ve neredeyse anında bildirim sağlar, ancak webhook teslimatının kaçırılabileceği veya gecikebileceği görevler için (örneğin sizin tarafınızda geçici bir ağ sorunu nedeniyle) yine de periyodik bir polling yedeği bulundurmalısınız.
Idempotency
Polling veya webhook kullanıp kullanmadığınıza bakılmaksızın, sonuç işleme kodunuz idempotent olmalıdır — yani aynı görev için yan etkiler oluşturmadan birden fazla kez çalıştırılması güvenli olmalıdır. Bu şu nedenlerle önemlidir:
Aynı görev için bir webhook birden fazla kez teslim edilebilir (gönderen tarafında yeniden denemeler, ağ çoğaltması vb.).
Bir polling döngüsü ve bir webhook işleyicisi, her ikisi de çalışıyorsa aynı tamamlanmış görevi işlemeye çalışabilir.
Idempotent kalmak için işleme mantığınızı görev id değerine dayandırın — örneğin, tekrar yapmadan önce o id için sonuçları zaten saklayıp indirmediğinizi kontrol edin ve "işlenmiş olarak işaretle" adımını kendi veritabanınızda tek bir atomik adım haline getirin.
status = SUCCEEDED
"status": "SUCCEEDED" ve "progress": 100 içeren bir yanıt, sonuç yükünün (model URL'leri, dokular, küçük resimler) eksiksiz olduğunu ve güvenle kullanılabileceğini garanti eden tek sinyaldir. Somut olarak, kodunuzda:
result/model URL alanlarından herhangi bir şey okumadan öncestatus === "SUCCEEDED"değerini doğrulayın.Yalnızca
progressdeğerine güvenmeyin — her zamanstatusdeğerini de kontrol edin, çünkü görev tam olarak sonlandırılmadan önce progress kısa süreliğine yüksek değerler gösterebilir.SUCCEEDEDolduktan sonra sonuç dosyalarını hemen indirin — üretilen varlıklar yalnızca sınırlı bir süre boyunca Meshy'nin sunucularında saklanır, sonrasında URL'ler artık çözümlenmez.
Yaygın hatalar
"Modelimi alamıyorum" bildirimlerinin çoğu şu nedenlerden birine dayanır:
Çok erken getirmek.
statusdeğeriSUCCEEDEDolmadan sonuç URL'sini çağırmak veya model alanlarını okumak. Bu, açık ara en sık görülen nedendir.Süresi dolmuş varlıklar.
SUCCEEDEDsonrası indirmek için çok uzun beklemek — sonuç URL'leri, o görev türü için saklama süresi geçtikten sonra çalışmayı durdurur.Eski veya yanlış bir görev kimliği kullanmak — örneğin, önceki, alakasız bir istekten gelen bir kimliği yeniden kullanmak.
FAILEDdurumunu geçici bir durum olarak ele almak ve yeniden göndermek yerine, zaten başarısız olmuş bir görevi polling yapmaya devam etmek.Sunucunuz ile Meshy arasındaki ağ/zaman aşımı sorunlarının bir üretim sorunu olarak yanlış yorumlanması.
Yeniden denemeler
Bir üretim beklentilerinizi karşılamıyorsa veya bir istek tamamen başarısız oluyorsa, şunları aklınızda bulundurun:
Meshy API şu anda mevcut bir görevi yerinde yeniden denemeyi desteklememektedir — tekrar denemek için, normal şekilde kredi harcayacak yeni bir üretim isteği göndermelisiniz.
API'yi çağırırken oluşan geçici ağ hataları (zaman aşımları, 5xx yanıtları) için, isteği yeniden göndermeden önce kısa bir üstel geri çekilme (exponential backoff) makuldür.
Polling'in kendisi için, geçici ağ hatalarında "görevi getir" çağrısını yeniden deneyin, ancak tek bir başarısız polling'i bir üretim hatası olarak ele almayın — başarılı bir yanıt aldığınızda yalnızca
statusalanına güvenin.Üretimler için yerleşik yeniden deneme işlevselliğine ihtiyacınız varsa, kurumsal plan seçenekleri hakkında Meshy'nin satış ekibiyle iletişime geçin.
SSS
1. API üzerinden bir üretim sonucundan modelleri alırken neden sürekli hata alıyorum?
Bu neredeyse her zaman, kodun görev bitmeden sonucu okumaya çalışmasından kaynaklanır. Model URL'lerini almadan önce her zaman status değerinin SUCCEEDED olduğunu (ve progress değerinin 100 olduğunu) doğrulayın.
2. Polling mi yoksa webhook mu kullanmalıyım?
Polling kurulumu daha basittir ve düşük hacimli veya tek seferlik betikler için uygundur. Webhook'lar, çok sayıda eşzamanlı görevi olan üretim entegrasyonları için daha iyidir; çünkü gereksiz tekrarlanan isteklerden kaçınırlar ve bir görev tamamlandığında sizi anında bilgilendirirler.
3. Sunucum aynı webhook'u iki kez alırsa ne yapmalı?
Idempotent şekilde işleyin — görev id değerini halihazırda işlediklerinizle karşılaştırın ve zaten işlenmişse yeniden işlemeyi atlayın.
4. Webhook'um hiç gelmedi — ne yapmalıyım?
Doğrudan id ile görevi polling yaparak yedeğe geçin. Ayrıca, uç noktanızın HTTPS üzerinden herkese açık şekilde erişilebilir olduğunu ve hızlı bir 2xx yanıtı döndürdüğünü doğrulayın; çünkü yavaş veya erişilemez uç noktalar teslimat sorunlarına neden olabilir.
5. Başarısız veya tatmin edici olmayan bir üretimi doğrudan API üzerinden yeniden deneyebilir miyim?
Şu anda hayır — normal şekilde kredi harcayacak yeni bir üretim isteği göndermeniz gerekir. Yerleşik yeniden deneme desteğine ihtiyacınız varsa kurumsal seçenekler hakkında satış ekibiyle iletişime geçin.
6. Durum SUCCEEDED olduktan sonra sonuçlarımı indirmek için ne kadar süreğim var?
Sonuç dosyaları, bir görev tamamlandıktan sonra yalnızca sınırlı bir süre boyunca Meshy'nin sunucularında saklanır; bu nedenle beklemek yerine görev başarar başarmaz çıktıları kendi depolama alanınıza indirin.
İlgili Makaleler