2011-10-29 17 views
5

में मुड़ वाले शब्दों का उपयोग करके मैं एक wsgi कंटेनर में मुड़ते हुए django चला रहा हूँ। जाहिर है, मैं अपने django कोड के अंदर deferreds के साथ सभी async सामान से परहेज कर रहा हूँ क्योंकि दस्तावेज़ीकरण के अनुसार, WSGI क्षुधा के अंदर घुमावदार async क्षमताओं की अनुमति नहीं है।डब्लूएसजीआई कंटेनर

हालांकि, मैं अपने डब्लूएसजीआई ऐप के अंदर एक jabber सर्वर को अनुरोध भेजने के लिए twisted.words का उपयोग करना चाहता हूं। क्या यह एसिंक सामान के रूप में गिना जाता है या क्या मैं इसे अपने ऐप के अंदर उपयोग कर सकता हूं? क्या हो सकता है अगर मैंने twisted.words jabber को एक डब्लूएसजीआई के अंदर एक xmpp सर्वर के लिए अनुरोध किया है?

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

किसी भी उत्तर के लिए धन्यवाद।

उत्तर

0

किसी अन्य थ्रेड (गैर-आई/ओ थ्रेड यानी, एक डब्लूएसजीआई एप्लीकेशन थ्रेड) से ट्विस्ट में मुख्य ईवेंट लूप (I/O थ्रेड) में फ़ंक्शन को कॉल करने के लिए आप reactor.callFromThread() का उपयोग कर सकते हैं। यदि आप परिणामों के लिए प्रतीक्षा करना चाहते हैं तो threads.blockingCallFromThread() का उपयोग करें। इस प्रकार आप twisted.words का उपयोग करने वाले कार्यों को कॉल कर सकते हैं Using Threads in Twisted देखें।

यह पता लगाने के लिए कि क्या एक wsgi कंटेनर बहु-थ्रेडेड निरीक्षण wsgi.multithread है, इसे मोड़ वाले कंटेनर के लिए सही करना चाहिए।

डब्लूएसजीआई कंटेनर एक समय में एक से अधिक अनुरोधों का समर्थन करने के लिए बहु-थ्रेडेड हैं (यह सख्ती से जरूरी नहीं है लेकिन यह मौजूदा सॉफ़्टवेयर का उपयोग करके जीवन को आसान बनाता है)। अन्यथा (यदि आप इसे हल करने के लिए अन्य साधनों का उपयोग नहीं करते हैं) तो आपका अनुरोध सर्वर आपके डेटाबेस हैंडलर डेटाबेस से किसी उत्तर के लिए प्रतीक्षा करता है। कुछ लोगों को अनुरोध हैंडलर को अन्य अनुरोधों को अवरुद्ध करने के बारे में चिंता करने में आसान लगता है यदि कई समवर्ती अनुरोध नहीं हैं।

पायथन में कार्य जो सीपीयू-गहन नौकरियां करते हैं, प्रदर्शन के मामले में पुस्तकालयों का उपयोग किया जा सकता है जो गणना के दौरान जीआईएल जारी करते हैं या उन्हें अन्य प्रक्रियाओं में ऑफ़लोड करते हैं। नेटवर्क, डिस्क I/O जो वेबपैप्स में अक्सर होते हैं आमतौर पर सीपीयू से बहुत धीमे होते हैं।

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