2012-06-09 12 views
7

मुझे समझ में आता है कि टॉरनाडो एक थ्रेडेड और गैर-अवरुद्ध सर्वर है, इसलिए अनुरोधों को अनुक्रमिक रूप से संभाला जाता है (आईओ ऑपरेशन के लिए ईवेंट संचालित दृष्टिकोण का उपयोग करते समय)।बवंडर में समवर्ती संभव है?

क्या सामान्य (गैर-आईओ) निष्पादन के लिए टर्ननाडो में समानांतर एकाधिक अनुरोधों को संसाधित करने का कोई तरीका है। मैं कई प्रक्रियाओं को फोर्क नहीं कर सकता क्योंकि मुझे अनुरोधों में एक सामान्य स्मृति स्थान की आवश्यकता है।

यदि यह संभव नहीं है तो कृपया मुझे अन्य पायथन सर्वर सुझाएं जो समानांतर अनुरोध को संभाल सकते हैं और wsgi का भी समर्थन कर सकते हैं।

उत्तर

7

यदि आप वास्तव में कई समेकित अनुरोधों से निपटने जा रहे हैं जो गणनाबद्ध हैं, और आप इसे पायथन में करना चाहते हैं, तो आपको बहु-थ्रेड वाले बहु-प्रक्रिया सर्वर की आवश्यकता नहीं है। सीपीथॉन में ग्लोबल इंटरप्रेटर लॉक (जीआईएल) है जो एक ही थ्रेड को एक ही समय में पायथन बाइटकोड निष्पादित करने से रोकता है।

अधिकांश वेब एप्लिकेशन बहुत कम गणना करते हैं, और इसके बजाय डेटाबेस, या डिस्क, या अन्य सर्वरों पर सेवाओं से I/O की प्रतीक्षा कर रहे हैं। सुनिश्चित करें कि आपको टॉरनाडो को छोड़ने से पहले गणना -बद्ध अनुरोधों को संभालने की आवश्यकता है।

5

आपके प्रश्न का उत्तर वास्तव में इस बात पर निर्भर करता है कि इन गणना-बाध्य धागे कितने समय तक चलेंगे। यदि वे कम चल रहे हैं, और उन्हें प्रसंस्करण की दर कम से कम उस दर से मेल खाती है जिस पर वे पहुंचते हैं, तो टोरनाडो ठीक रहेगा। यह वास्तव में सिंगल थ्रेडेड है, लेकिन यह बहुत अच्छी तरह से स्केल करता है।

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

यदि आप सभी अनुरोधों में एक ही मेमोरी स्पेस रखने के प्रतिबंध को आराम करने में सक्षम हैं तो आप टोरनाडो को PyZMQ के साथ चलाने पर विचार कर सकते हैं, क्योंकि यह एक ही टोरनाडो उदाहरण के सामने कई टोरनाडो बैक-एंड चलाने का एक तरीका प्रदान करता है । यह आपको पूरे समाधान के लिए टोरनाडो का उपयोग जारी रखने की अनुमति देता है। अधिक जानकारी के लिए PyZMQ के web.zmqweb मॉड्यूल देखें।

+0

आपके उत्तरों के लिए धन्यवाद। मुझे जीआईएल के बारे में पता नहीं है। तो मैं सीपीथॉन में थ्रेड का उपयोग करके समानांतर प्रक्रिया नहीं कर सकता और मुझे बहु-प्रक्रिया के साथ जाना है। – Adhi

+1

आप पाइथन में समांतर प्रसंस्करण कर सकते हैं, लेकिन आप अपने सभी संसाधनों का उपयोग नहीं करेंगे क्योंकि आप पाइथन कोड चलाते समय केवल 1 सीपीयू पीआर पायथन प्रक्रिया का उपयोग करेंगे। तो आप समरूपता के लिए धागे का उपयोग कर सकते हैं, लेकिन उपलब्ध प्रदर्शन लाभों की एक निश्चित सीमा है। लेकिन बहुत समय टोरनाडो I/O की प्रतीक्षा कर रहा है, इसलिए उदाहरण के लिए थ्रेडिंग जोड़ने से बहुत कुछ हासिल किया जा सकता है। –

+0

zmqweb को अपने स्वयं के प्रोजेक्ट में पीईजेडएमक्यू से बाहर खींच लिया गया है: https://github.com/ellisonbg/zmqweb –

संबंधित मुद्दे