मुख्य सामग्री पर जाएं

Meshy API Webhooks बनाम Polling: परिणाम कब तैयार होते हैं

Meshy API Webhooks बनाम Polling: कार्य की स्थिति

विषय-सूची

Meshy API generation कार्य (Text to 3D, Image to 3D, Rigging और अन्य) असिंक्रोनस रूप से चलते हैं — आप एक कार्य सबमिट करते हैं और फिर परिणाम लाने से पहले यह पता लगाना होता है कि वह कब पूरा हुआ। यह लेख कार्य जीवनचक्र और किसी कार्य के पूरा होने का पता लगाने के दो समर्थित तरीके बताता है: polling और webhooks — साथ ही सबसे आम "मॉडल प्राप्त करने में त्रुटियाँ" वाली समस्या से कैसे बचें।

अवलोकन

कार्य जीवनचक्र

प्रत्येक generation कार्य कुछ ही स्थितियों से गुज़रता है, जो कार्य ऑब्जेक्ट के status फ़ील्ड में लौटाई जाती हैं:

  • PENDING — कार्य कतार में जोड़ दिया गया है, लेकिन प्रोसेसिंग अभी शुरू नहीं हुई है।

  • IN_PROGRESS — कार्य सक्रिय रूप से प्रोसेस हो रहा है। काम पूरा होने के साथ progress फ़ील्ड (0-100) बढ़ता जाता है।

  • SUCCEEDED — कार्य सफलतापूर्वक पूरा हो गया और progress 100 है। अब प्रतिक्रिया में परिणाम URL (मॉडल फ़ाइलें, टेक्सचर, प्रीव्यू) उपलब्ध हैं।

  • FAILED — कार्य पूरा नहीं हो सका। विफल कार्यों के क्रेडिट स्वतः वापस कर दिए जाते हैं।

  • CANCELED — कार्य पूरा होने से पहले रद्द कर दिया गया।

API के साथ इंटीग्रेट करते समय सबसे महत्वपूर्ण नियम: जब तक कार्य का status SUCCEEDED न हो जाए, तब तक परिणाम URL प्राप्त करने या उपयोग करने का प्रयास कभी न करें। कार्य के PENDING या IN_PROGRESS रहते परिणाम पढ़ना ही "errors retrieving the model" संबंधी शिकायतों का सबसे आम कारण है।

Polling का उदाहरण

Polling का अर्थ है अपने task ID के लिए "get task" endpoint को बार-बार कॉल करना, जब तक कि वह किसी terminal state (SUCCEEDED, FAILED, या CANCELED) तक न पहुँच जाए। एक सरल polling loop इस तरह दिखता है:

  • generation अनुरोध सबमिट करें और लौटाया गया task id संग्रहीत करें।

  • संबंधित "retrieve task" endpoint (उदाहरण के लिए, Text to 3D या Image to 3D का task-by-id endpoint) को एक अंतराल पर कॉल करें — कुछ सेकंड का अंतराल सामान्य है।

  • प्रत्येक प्रतिक्रिया पर status फ़ील्ड जाँचें। जब तक यह PENDING या IN_PROGRESS है, polling जारी रखें।

  • जैसे ही status SUCCEEDED हो जाए (result URLs पढ़ें), FAILED, या CANCELED, तो polling रोक दें।

  • अपने client में उचित timeout/max-attempts गार्ड जोड़ें ताकि कोई अटका हुआ task अनंत काल तक polling न करता रहे।

Polling सरल है और scripts, batch jobs तथा कम मात्रा वाले integrations के लिए अच्छी तरह काम करता है। उच्च मात्रा वाले या latency-संवेदनशील integrations के लिए, webhook आमतौर पर अधिक उपयुक्त होता है।

Webhook सेटअप

बार-बार "क्या यह हो गया?" पूछने के बजाय, आप Meshy से कह सकते हैं कि जैसे ही कोई कार्य पूरा हो, वह आपके सर्वर को सूचित करे। webhooks का उपयोग करने के लिए:

  • एक webhook (callback) URL कॉन्फ़िगर करें जिस तक Meshy पहुँच सके — यह आमतौर पर account/API सेटिंग्स के स्तर पर सेट किया जाता है या generation अनुरोध पर एक पैरामीटर के रूप में भेजा जाता है, जो endpoint पर निर्भर करता है।

  • सुनिश्चित करें कि आपका endpoint HTTPS पर सार्वजनिक रूप से पहुँच योग्य हो और शीघ्र उत्तर दे (तुरंत 2xx स्थिति लौटाएँ, फिर payload को asynchronously प्रोसेस करें)।

  • जब कार्य किसी terminal स्थिति में पहुँचता है, तो Meshy आपके endpoint पर एक payload भेजता है जिसमें कार्य का id और उसका अंतिम status होता है।

  • प्राप्त होने पर, केवल webhook body पर भरोसा करने के बजाय API के माध्यम से id द्वारा पूरे कार्य का विवरण देखें, ताकि आपके पास प्रामाणिक और अद्यतित परिणाम सुनिश्चित हो।

Webhooks अनावश्यक API कॉल कम करते हैं और आपको लगभग तत्काल सूचना देते हैं, लेकिन फिर भी आपको उन कार्यों के लिए आवधिक polling fallback रखना चाहिए जहाँ webhook डिलीवरी छूट सकती है या देरी से हो सकती है (जैसे आपकी ओर से किसी अस्थायी नेटवर्क समस्या के कारण)।

इडेम्पोटेंसी

चाहे आप polling या webhooks का उपयोग करें, आपके परिणाम-प्रबंधन कोड को इडेम्पोटेंट होना चाहिए — यानी एक ही कार्य के लिए एक से अधिक बार चलने पर भी कोई दुष्प्रभाव न हो। यह इसलिए महत्वपूर्ण है क्योंकि:

  • एक ही कार्य के लिए webhook एक से अधिक बार डिलीवर हो सकता है (भेजने वाले पक्ष पर पुनः प्रयास, नेटवर्क द्वारा दोहराव, आदि)।

  • यदि polling लूप और webhook handler दोनों चल रहे हों, तो दोनों एक ही पूर्ण हो चुके कार्य को प्रोसेस करने का प्रयास कर सकते हैं।

इडेम्पोटेंट बने रहने के लिए, अपने प्रोसेसिंग लॉजिक को कार्य के id पर आधारित करें — उदाहरण के लिए, दोबारा करने से पहले जाँचें कि आपने उस id के लिए परिणाम पहले ही संग्रहीत/डाउनलोड कर लिए हैं या नहीं, और "प्रोसेस्ड के रूप में चिह्नित करना" अपने डेटाबेस में एक ही अटॉमिक चरण बनाएँ।

status = SUCCEEDED

"status": "SUCCEEDED" और "progress": 100 वाला प्रतिक्रिया ही एकमात्र संकेत है जो गारंटी देता है कि परिणाम पेलोड (मॉडल URL, टेक्सचर, थंबनेल) पूर्ण है और उपयोग करने के लिए सुरक्षित है। ठोस रूप से, अपने कोड में:

  • result/मॉडल URL फ़ील्ड से कुछ भी पढ़ने से पहले status === "SUCCEEDED" सत्यापित करें।

  • केवल progress पर निर्भर न रहें — हमेशा status भी जाँचें, क्योंकि कार्य पूरी तरह अंतिम रूप लेने से पहले progress कुछ समय के लिए उच्च मान दिखा सकता है।

  • SUCCEEDED होने पर परिणाम फ़ाइलें तुरंत डाउनलोड करें — जनरेट किए गए एसेट Meshy के सर्वर पर केवल सीमित समय तक ही रखे जाते हैं, जिसके बाद URL काम करना बंद कर देंगे।

सामान्य त्रुटियाँ

“मैं अपना मॉडल प्राप्त नहीं कर पा रहा हूँ” से जुड़ी अधिकांश रिपोर्ट्स इनमें से किसी एक कारण से जुड़ी होती हैं:

  • बहुत जल्दी फ़ेच करना। status के SUCCEEDED होने से पहले result URL को कॉल करना या मॉडल फ़ील्ड्स पढ़ना। यह अब तक का सबसे आम कारण है।

  • समय-सीमा समाप्त एसेट्स। SUCCEEDED के बाद डाउनलोड करने में बहुत देर करना — उस टास्क प्रकार के retention window बीत जाने के बाद result URLs काम करना बंद कर देते हैं।

  • पुराने या गलत टास्क ID का उपयोग करना — उदाहरण के लिए, किसी पिछले, असंबंधित अनुरोध से ID का फिर से उपयोग करना।

  • FAILED को अस्थायी स्थिति मानना और पुनः सबमिट करने के बजाय पहले से विफल टास्क को poll करते रहना।

  • आपके सर्वर और Meshy के बीच नेटवर्क/टाइमआउट समस्याएँ जिन्हें गलती से generation समस्या समझ लिया जाता है।

पुनः प्रयास

यदि कोई generation आपकी अपेक्षाओं पर खरा नहीं उतरता, या कोई अनुरोध पूरी तरह विफल हो जाता है, तो निम्नलिखित बातें ध्यान में रखें:

  • Meshy API वर्तमान में किसी मौजूदा कार्य को उसी स्थान पर पुनः प्रयास करने का समर्थन नहीं करता — दोबारा प्रयास करने के लिए, एक नया generation अनुरोध सबमिट करें, जिसमें credits सामान्य रूप से खर्च होंगे।

  • API को कॉल करते समय होने वाली अस्थायी नेटवर्क विफलताओं (timeouts, 5xx responses) के लिए, अनुरोध दोबारा सबमिट करने से पहले थोड़ा exponential backoff करना उचित है।

  • स्वयं polling के लिए, अस्थायी नेटवर्क त्रुटियों पर "get task" कॉल का पुनः प्रयास करें, लेकिन एक बार विफल हुए poll को generation की विफलता न मानें — status फ़ील्ड पर तभी भरोसा करें जब आपको सफल response मिले।

  • यदि आपको generations के लिए अंतर्निहित पुनः प्रयास कार्यक्षमता चाहिए, तो enterprise plan विकल्पों के बारे में Meshy की sales team से संपर्क करें।

FAQ

1. API के माध्यम से generation result से मॉडल प्राप्त करते समय मुझे लगातार त्रुटियाँ क्यों मिलती हैं?

ऐसा लगभग हमेशा इसलिए होता है क्योंकि कोड कार्य पूरा होने से पहले ही परिणाम पढ़ने का प्रयास कर रहा होता है। मॉडल URL प्राप्त करने से पहले हमेशा पुष्टि करें कि status का मान SUCCEEDED है (और progress 100 है)।

2. मुझे polling या webhooks का उपयोग करना चाहिए?

Polling सेट अप करना आसान है और कम मात्रा वाले या एक बार चलने वाले स्क्रिप्ट के लिए ठीक है। कई समवर्ती कार्यों वाले production integrations के लिए Webhooks बेहतर हैं, क्योंकि वे अनावश्यक बार-बार अनुरोधों से बचते हैं और कार्य पूरा होते ही आपको तुरंत सूचित करते हैं।

3. यदि मेरे सर्वर को एक ही webhook दो बार मिलता है तो उसे क्या करना चाहिए?

इसे इडेम्पोटेंट तरीके से संभालें — कार्य के id की तुलना उससे करें जिसे आप पहले ही प्रोसेस कर चुके हैं, और यदि उसे पहले ही संभाला जा चुका है तो दोबारा प्रोसेसिंग छोड़ दें।

4. मेरा webhook कभी नहीं आया — मुझे क्या करना चाहिए?

id द्वारा सीधे कार्य को polling करने पर वापस जाएँ। यह भी पुष्टि करें कि आपका endpoint HTTPS पर सार्वजनिक रूप से पहुँच योग्य है और तेज़ 2xx प्रतिक्रिया देता है, क्योंकि धीमे या अगम्य endpoints डिलीवरी संबंधी समस्याएँ पैदा कर सकते हैं।

5. क्या मैं API के माध्यम से सीधे किसी विफल या असंतोषजनक generation को पुनः प्रयास कर सकता हूँ?

अभी नहीं — आपको एक नया generation अनुरोध सबमिट करना होगा, जो सामान्य रूप से credits खर्च करता है। यदि आपको अंतर्निहित retry सहायता चाहिए तो enterprise विकल्पों के बारे में sales से संपर्क करें।

6. status के SUCCEEDED होने के बाद परिणाम डाउनलोड करने के लिए मेरे पास कितना समय है?

कार्य पूरा होने के बाद परिणाम फ़ाइलें Meshy के सर्वर पर केवल सीमित समय तक ही रखी जाती हैं, इसलिए प्रतीक्षा करने के बजाय कार्य सफल होते ही आउटपुट को अपने स्वयं के स्टोरेज में डाउनलोड कर लें।


संबंधित लेख

क्या इससे आपके प्रश्न का उत्तर मिला?