तूफान का उपयोग करना, मैं एक प्राप्त अनुरोध है कि एक लंबा समय लगता है क्योंकि यह किसी अन्य वेब सेवा के लिए कई अनुरोध करता और डाटा को संसाधित करता है, मिनट पूरी तरह से पूरा करने के लिए ले सकता है। मैं नहीं चाहता कि यह पूरे वेब सर्वर को अन्य अनुरोधों का जवाब देने से रोक देगा, जो वर्तमान में करता है।तूफान अवरुद्ध अतुल्यकालिक अनुरोध
मैं यह समझ के रूप में, तूफान एकल लड़ी है और तालमेल के प्रत्येक अनुरोध को निष्पादित करता है, भले ही यह उनके एसिंक्रोनस रूप से संभालती है (अब भी है कि बिट पर उलझन में)। लंबी प्रक्रिया के कुछ हिस्सों हैं जो सर्वर को अन्य अनुरोधों (संभव समाधान?) को संभालने की अनुमति देने के लिए पॉज़ पॉइंट्स हो सकते हैं। मैं इसे एक ही कार्यकर्ता के साथ हेरोकू पर चला रहा हूं, इसलिए यह सुनिश्चित न करें कि यह एक नए थ्रेड या मल्टीप्रोसेसिंग में कैसे अनुवाद करता है, जिसमें मुझे अजगर के साथ कोई अनुभव नहीं है।
यहां मैं जो करने की कोशिश कर रहा हूं: क्लाइंट प्रक्रिया शुरू करने के लिए कॉल प्राप्त करता है, फिर मैं स्थिति की जांच करने और नई जानकारी के साथ पृष्ठ को अद्यतन करने के लिए हर 5 सेकंड में कॉल प्राप्त करता हूं (लंबी मतदान काम भी करते हैं लेकिन एक ही मुद्दे में चल रहे हैं)। समस्या यह है कि लंबी प्रक्रिया शुरू करने से सभी नए अनुरोध (या नए लंबे मतदान सत्र) को पूरा होने तक ब्लॉक मिल जाता है।
क्या इस लंबी कॉल को बंद करने का कोई आसान तरीका है और इस प्रक्रिया में पूरे वेब सर्वर को अवरुद्ध नहीं किया गया है? क्या मैं कुछ भी कहने के लिए कोड में डाल सकता हूं .. "रोकें, लंबित अनुरोधों को संभालें, फिर जारी रखें"?
मुझे प्रोसेस हैडलर पर एक अनुरोध प्राप्त करने की आवश्यकता है। मुझे प्रोसेस हैडलर चल रहा है, जबकि मुझे स्टेटसहैंडलर से पूछने में सक्षम होना जारी रखना होगा।
उदाहरण:
class StatusHandler(tornado.web.RequestHandler):
@tornado.web.asynchronous
def get(self):
self.render("status.html")
class ProcessHandler(tornado.web.RequestHandler):
@tornado.web.asynchronous
def get(self):
self.updateStatus("0")
result1 = self.function1()
self.updateStatus("1")
result2 = self.function2(result1)
self.updateStatus("2")
result3 = self.function3(result2)
self.updateStatus("3")
self.finish()
क्या आपने tornado.gen मॉड्यूल का प्रयास किया है? http://www.tornadoweb.org/documentation/gen.html –
आप एक अतुल्यकालिक कॉल के रूप में उस पर टिप्पणी करने के लिए याद किया: जोड़ें: अपने GET तरीकों –
पर @asynchronous andyboot हाँ, मैं अपने प्राप्त तरीकों – JeffG