UWSGI का क्या मतलब है?


97

मैं डब्ल्यूएसजीआई विनिर्देश को देख रहा हूं और यह पता लगाने की कोशिश कर रहा हूं कि यूडब्ल्यूएसजीआई जैसे सर्वर चित्र में कैसे फिट होते हैं। मुझे समझ में आ रहा है कि WSGI युक्ति का बिंदु वेब अनुप्रयोगों से वेब सर्वरों को अलग करने के लिए है जैसे कि आप फ्लास्क का उपयोग करके लिखेंगे । मुझे समझ नहीं आ रहा है कि uWSGI किस लिए है? Nginx सीधे मेरे फ्लास्क एप्लिकेशन को कॉल क्यों नहीं कर सकता? फ्लास्क डब्ल्यूएसजीआई से सीधे बात नहीं कर सकता है? उनके बीच uWSGI की आवश्यकता क्यों है?

डब्लूएसजीआई कल्पना में दो पक्ष हैं: सर्वर और वेब ऐप। किस पक्ष पर uWSGI है?

जवाबों:


131

ठीक है, मुझे लगता है कि मुझे यह अब मिल गया है।

Nginx सीधे मेरे फ्लास्क एप्लिकेशन को कॉल क्यों नहीं कर सकता?

क्योंकि nginxWSGI युक्ति का समर्थन नहीं करता है। तकनीकी रूप से nginx WSGIअगर वे चाहते हैं, तो वे कल्पना को लागू कर सकते थे।

यही कारण है कि, हमें एक वेब सर्वर की आवश्यकता है जो कल्पना को कार्यान्वित करता है, जो कि uWSGIसर्वर के लिए है।

ध्यान दें कि uWSGIएक पूर्ण विकसित http सर्वर है जो अपने दम पर अच्छी तरह से काम कर सकता है और करता है। मैंने इसे इस क्षमता में कई बार उपयोग किया है और यह बहुत अच्छा काम करता है। यदि आपको स्थैतिक सामग्री के लिए सुपर उच्च थ्रूपुट की आवश्यकता है, तो आपके पास nginxआपके uWSGIसर्वर के सामने चिपके रहने का विकल्प है । जब आप ऐसा करते हैं, तो वे निम्न स्तर के प्रोटोकॉल पर संवाद करेंगे, जिसे जाना जाता है uwsgi

"व्हाट द व्हाट! एक और चीज़ जिसे उव्सगी कहा जाता है ?!" तुम पूछो। हाँ, यह भ्रामक है। जब आप संदर्भ uWSGIलेते हैं तो आप http सर्वर के बारे में बात कर रहे होते हैं। जब आप uwsgi(सभी लोअरकेस) के बारे में बात करते हैं तो आप एक बाइनरी प्रोटोकॉल के बारे में बात कर रहे होते हैं जो uWSGI सर्वर अन्य सर्वरों से बात करने के लिए उपयोग करता है nginx। उन्होंने इस पर बुरा नाम उठाया।

जो कोई भी रुचि रखता है, मैंने इसके बारे में अधिक बारीकियों, थोड़ा इतिहास और कुछ उदाहरणों के साथ एक ब्लॉग लेख लिखा ।


4
HTTP सर्वर के रूप में Werkzeug के साथ फ्लास्क एप्लिकेशन चलाना संभव है, लेकिन यह तैयार सेटअप का उत्पादन नहीं करता है। uWSGI कई समस्याओं को हल करता है: * HTTP पार्सिंग (C में तेज़) और WSGI ऐप के साथ इंटरफेस करना * बेहतर संगामिति के लिए कई प्रक्रियाओं / थ्रेड्स में ऐप लॉन्च करता है * WSGI ऐप के सुपरवाइजर के रूप में कार्य करता है
सर्गेई पैन्नीलोव

@SergeyPanfilov मुसीबत यह है कि हम नहीं जानते कि कैसे uwsgi फ्लास्क से निपटने के लिए, प्रत्येक प्रक्रिया / थ्रेड्स ने फ्लास्क ऐप का एक उदाहरण बनाया? मैंने फ्लास्क-एक्जिक्यूटर जैसे फ्लास्क में बैकग्राउंड टास्क के लिए कुछ कार्यान्वयन देखा है और इसे एक अनुरोध के अंदर बांधना होगा। संदर्भ के बाहर जगह नहीं हो सकती।
टॉमसॉयर

हसन से जवाब पढ़ें .. यह सही उत्तर के करीब है ..... http सर्वर ज्यादातर सी में लिखे गए हैं और वे
पीथॉन बैकएंड्स के

25

इस मामले में एनजीआईएनएक्स केवल रिवर्स प्रॉक्सी के रूप में काम करता है और स्थिर फाइलों को डायनामिक फ़ाइलों को प्रस्तुत नहीं करता है, यह अनुरोधों को प्राप्त करता है और उन्हें एप्लिकेशन सर्वर पर प्रॉक्सी करता है, जो कि UWSGI होगा।

UWSGI सर्वर WSGI इंटरफ़ेस का उपयोग करके आपके फ्लास्क एप्लिकेशन को लोड करने के लिए जिम्मेदार है। आप वास्तव में इंटरनेट से अनुरोधों को सीधे सुन सकते हैं और यदि आप चाहें तो एनजीआईएनएक्स को हटा सकते हैं, हालांकि यह ज्यादातर रिवर्स प्रॉक्सी के पीछे उपयोग किया जाता है।

से डॉक्स :

uWSGI वेब सर्वर के साथ एकीकरण के कई तरीकों का समर्थन करता है। यह स्वयं के द्वारा HTTP अनुरोधों की सेवा करने में भी सक्षम है।

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

दूसरे शब्दों में, WSGI मूल रूप से अजगर अनुप्रयोगों (फ्लास्क, Django, आदि) और वेब सर्वर (UWSGI, Gunicorn, आदि) के बीच एक अनुबंध है। लाभ यह है कि आप वेब सर्वर को थोड़े प्रयास से बदल सकते हैं क्योंकि आप जानते हैं कि वे WSGI विनिर्देश का अनुपालन करते हैं, जो वास्तव में लक्ष्यों में से एक है, जैसा कि PEP-333 में कहा गया है ।

पायथन वर्तमान में Zope, Quixote, Webware, SkunkWeb, PSO, और Twisted Web जैसे कई तरह के वेब एप्लिकेशन फ्रेमवर्क समेटे हुए है - केवल कुछ 1 को नाम देने के लिए । नए पाइथन उपयोगकर्ताओं के लिए इस तरह की व्यापक विविधताएं एक समस्या हो सकती हैं, क्योंकि आम तौर पर बोलते हुए, उनकी वेब फ्रेमवर्क की पसंद उनके उपयोग योग्य वेब सर्वरों की पसंद को सीमित कर देगी, और इसके विपरीत।


20

एक पारंपरिक वेब सर्वर पायथन एप्लिकेशन को चलाने का कोई तरीका नहीं समझता है या उसके पास नहीं है। यही कारण है कि WSGI सर्वर अंदर आता है। दूसरी तरफ Nginx अनुरोधों को संभालने और Python WSGI सर्वरों के लिए वापस प्रतिक्रिया देने के लिए रिवर्स प्रॉक्सी का समर्थन करता है।

यह लिंक आपकी मदद कर सकता है: https://www.fullstackpython.com/wsgi-servers.html


4
यहाँ तीन चीजें हैं: नगनेक्स, उव्सगी और फ्लास्क। WSGI युक्ति के संदर्भ में यह सब एक साथ कैसे फिट होता है? क्या nginx सर्वर है और uwsgi ऐप है या uwsgi सर्वर है और फ्लास्क ऐप है?
d512

uWSGI सर्वर है और फ्लास्क ऐप है।
रफीकुल हसन

ठीक है, अगर आपको कोई आपत्ति नहीं है, तो मेरे अपने प्रश्न के उत्तर की जाँच करें और देखें कि आप क्या सोचते हैं।
d512

4
एक वेब सर्वर पायथन ऐप्स को क्यों नहीं समझता है? यह PHP को समझ सकता है, पायथन या अन्य भाषाओं को क्यों नहीं?
jdogg

0

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.