2016-07-26 13 views
12

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

WSGI कल्पना में दोनों पक्षों के हैं। यूडब्ल्यूएसजीआई किस तरफ है?

उत्तर

10

ठीक है, मैं अब मैं इस मिल लगता है। मैं एक Wikipedia artile में निम्नलिखित विवरण पढ़ें:

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

यह विशेष रूप से नहीं कहता है, लेकिन मुझे लगता है कि यूडब्ल्यूएसजीआई इन मध्यवर्तियों में से एक है। मेरी समझ यह है कि uWSGI आपके फ्लास्क ऐप के आस-पास एडाप्टर के रूप में कार्य करता है ताकि फ्लास्क (या आप जिस भी अन्य ढांचे का उपयोग करना चाहते हैं) को विशेष रूप से डब्लूएसजीआई विनिर्देश के ऐप पक्ष को कार्यान्वित करने के बारे में नहीं पता होना चाहिए।

तो अपने स्वयं के प्रश्न का उत्तर देने के लिए, यूडब्ल्यूएसजीआई और फ्लास्क एक साथ डब्लूएसजीआई के ऐप पक्ष बनाते हैं और nginx वेब सर्वर पक्ष है।

मेरा मानना ​​है कि आप भी जिस स्थिति में यह दोनों भूमिकाएं निभा हैं वेब सर्वर के रूप में चलाने uWSGI हो सकता है, लेकिन मुझे शक है कि ज्यादातर लोगों को ऐसा लगता है कि जिस तरह से करना होगा।

रुचि रखने वाले किसी भी व्यक्ति के लिए, मैंने blog article लिखा है जिसमें इसके बारे में अधिक विशिष्टताएं, कुछ इतिहास और कुछ उदाहरण हैं।

+0

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

6

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

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

+0

यहां तीन चीज़ें हैं: nginx, uwsgi, और फ्लास्क। डब्लूएसजीआई स्पेक के संदर्भ में यह सब एक साथ कैसे फिट हो जाता है? क्या nginx सर्वर है और uwsgi ऐप है या सर्वर uwsgi है और फ्लास्क ऐप है? – d512

+0

uWSGI सर्वर है और फ्लास्क ऐप है। –

+0

अच्छा, अगर आपको कोई फर्क नहीं पड़ता है, तो मेरे अपने प्रश्न का उत्तर देखें और देखें कि आप क्या सोचते हैं। – d512

0

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

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

docs से

:

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

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

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

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

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