WSGI बनाम नग्नेक्स के साथ uWSGi [बंद]


90

WSGI VS uWSGI का Nginx के साथ उपयोग करने पर क्या कोई कृपया पेशेवरों / विपक्षों को समझा सकता है ।

वर्तमान में मैं Django वेबसाइट के लिए एक उत्पादन सर्वर का निर्माण कर रहा हूं जिसे मैंने तैयार किया है लेकिन यह तय करने में असमर्थ है कि मुझे WSGI या uWSGI के साथ जाना चाहिए या नहीं। क्या आप विस्तार से बता सकते हैं कि प्रत्येक विन्यास में क्या अंतर है? कौन सा कॉन्फ़िगरेशन सबसे अच्छा होना चाहिए?

अग्रिम में धन्यवाद


यह ब्लॉग पोस्ट एक सारांश और अंत में कुछ सिफारिशों के साथ पायथन WSGI सर्वरों की एक बहुत विस्तृत तुलना है।
लोव थिडरमैन

और कुछ सर्वरों के लिए कॉन्फ़िगरेशन का भी उपयोग करता है जो वास्तव में डोडी हैं और उन्हें बदतर बना देता है जो वे हो सकते हैं। एक को सावधान रहना होगा कि कोई उस तुलना में क्या पढ़ता है।
ग्राहम डम्पलटन

25
WSGI एक विनिर्देशन है। uWSGI WSGI विनिर्देश के कार्यान्वयन को प्रदान करता है। आप उनकी तुलना नहीं कर सकते। आप केवल विभिन्न कार्यान्वयन की तुलना कर सकते हैं।
ग्राहम डम्पलटन

जवाबों:


101

ठीक है, दोस्तों यह भ्रम कई स्रोतों से विस्तार की कमी के कारण है, और इन प्रोटोकॉल का नामकरण, और डब्ल्यूएसजीआई वास्तव में क्या है।

सारांश:

  1. WSGI और uwsgi दोनों प्रोटोकॉल हैं, सर्वर नहीं। इसका उपयोग लोड संतुलन के लिए वेब सर्वर के साथ संवाद करने और विशेष रूप से उन अतिरिक्त सुविधाओं का लाभ उठाने के लिए किया जाता है जो शुद्ध HTTP प्रदान नहीं कर सकते हैं। अब तक नेग्नेक्स और चेरोकी ने इस प्रोटोकॉल को लागू कर दिया है।
  2. uWSGI एक सर्वर है और इसे लागू करने वाले प्रोटोकॉल में से एक WSGI है (uWSGI सर्वर के साथ uwsgi प्रोटोकॉल को भ्रमित न करें)। WSGI एक पायथन विनिर्देश है । डब्लूएसजीआई विनिर्देश के कई कार्यान्वयन हैं और इसका उपयोग केवल एप्लिकेशन सर्वर / वेब सर्वर से अधिक के लिए किया जाना है, लेकिन इसमें कुछ डब्लूएसजीआई एप्लिकेशन सर्वर (यानी चेरीपीआई) हैं, जो उत्पादन के लिए तैयार डब्ल्यूएसजीआई अनुरूप वेब सर्वर भी होता है। , यदि आप पहले से ही भ्रमित नहीं थे!)।
  3. WSGI के लिए uwsgi की तुलना करना सेब के संतरे की तुलना करना है।

3
टाइपो: "1. uwsgi एक प्रोटोकॉल है न कि सर्वर।" -> "1. WSGI एक प्रोटोकॉल है न कि सर्वर।"
अमन

9
वास्तव में, मैंने 1 के लिए जो लिखा है वह सही है, लेकिन यह सच है WSGI एक प्रोटोकॉल के साथ-साथ uwsgi भी है, इसलिए आपके द्वारा लिखे गए दोनों कथन सही हैं :)। बेशक, बाकी के संदर्भ के बिना 1. यह uWSGI सर्वर द्वारा उपयोग किया जाने वाला प्रोटोकॉल है। wiki.nginx.org/HttpUwsgiModule , - "uWSGI सर्वर के साथ uwsgi प्रोटोकॉल को भ्रमित न करें (जो uwsgi प्रोटोकॉल बोलता है")
Derek Litz

4
आह ठीक है। मैंने सोचा था कि आप कथन 1 के बीच एक विरोधाभास खींचने की कोशिश कर रहे थे। "wsgi एक प्रोटोकॉल है .." और 2. "uwsgi एक सर्वर है जो प्रोटोकॉल को लागू करता है"।
अमन

2
जब हम करते हैं तो @DerekLitz, किस सर्वर पर django चलता है python manage.py runserver?
पीयूष एस। वानारे

python manage.py runserverDjango के लिए बनाया गया एक आंतरिक सर्वर है। यह अपाचे, नग्नेक्स, अंगरखा या कुछ और नहीं है। django-extensionsप्रदान करता है एक runserver_plusWERKZEUG ढांचे, पर एक सर्वर किसी भी रूप में के करीब के रूप में है कि के उपयोग करता है runserverहो जाता है।
माइक डीसिमोन

32

आमतौर पर अपने मुख्य वेब सर्वर से एक अलग प्रक्रिया में पायथन को चलाना सबसे अच्छा है। इस तरह, वेब सर्वर में बहुत सारे छोटे धागे हो सकते हैं जो स्थिर सामग्री की वास्तव में तेजी से सेवा करते हैं, जबकि आपकी अलग पायथन प्रक्रियाएं बड़ी और भारी होंगी और प्रत्येक अपने स्वयं के पायथन दुभाषिया को चलाएगी। तो मैदान WSGIखराब है, क्योंकि यह आपके नगीन धागे में से हर एक को बड़े पायथन दुभाषिया के साथ खिलता है। का उपयोग करते हुए flupया gunicornया uWSGIपीछे nginx, क्योंकि वह मुक्त कर देते nginx अप करने के लिए सामान्य रूप से सामग्री की सेवा, बेहतर है, और आप कितने छोटे प्रकाश nginx धागे चलाने के लिए चुनते हैं, कितने दिग्गज अजगर धागे आप गतिशील सामग्री की सेवा के लिए ऊपर लाने के लिए अपनी पसंद के स्वतंत्र रूप से कर सकते हैं। लोग gunicornइस समय बहुत खुश लग रहे हैं, लेकिन उन तीन विकल्पों में से किसी को भी ठीक काम करना चाहिए।

आगे बढ़ते हुए, यह आपको किसी अन्य सर्वर पर पायथन को स्थानांतरित करने के लिए भी मुक्त करता है जब लोड गंभीर होने लगता है।


1
आपके उत्तर से थोड़ा भ्रमित हूँ। मैं यह नहीं देख सकता कि उन्होंने nginx के अंदर किसी भी प्रकार के WSGI कार्यान्वयन को चलाने का उल्लेख किया है। उन्होंने मुख्य wsgi.org साइट का संदर्भ दिया। WSGI और uWSGI के बीच उनकी मूल तुलना इस प्रकार पहले से थोड़ी मूर्खतापूर्ण है क्योंकि uWSGI WSGI विनिर्देश का कार्यान्वयन है। आपने स्वयं यह कहते हुए सामान्य WSGI शब्द का उपयोग भ्रमित रूप से किया है कि 'यह आपके प्रत्येक नगीन धागे को बड़े पायथन दुभाषिया के साथ खिलता है।' WSGI विनिर्देश ही ऐसा नहीं कर सकता, केवल कार्यान्वयन कर सकता है।
ग्राहम डम्पलटन

1
अगर हम nginx + mod_wsgi (प्लगेबल मॉड्यूल) और nginx + uWSGI (एप्लिकेशन सर्वर कंटेनर) की तुलना कर रहे थे तो यह समझ में आ सकता है।
क्लीमे

इसलिए जब पाइथन वेब एप्स को चलाने के लिए Nginx का उपयोग करने की बात आती है, क्योंकि Manlio Perillo की mod_wsgi डेडवेयर है और अनुशंसित नहीं है, तो अच्छे समाधान WSGI के साथ या तो gunicorn या uWSGI, या Fastup के साथ FastGGI हैं?
गुलबहार

19

मेरा मानना ​​है कि यहीं http://flask.pocoo.org/docs/deploying/uwsgi/ भ्रम को दूर करने के लिए एक अच्छा जवाब है। यह सवाल मूर्खतापूर्ण है, दो शब्दों को देखने वाले के पास होता है और इस बारे में कोई पूर्व सूचना नहीं होती है कि चीजें mod_PHP दुनिया के बाहर कैसे काम करती हैं (उदाहरण के लिए php या लोगों के खिलाफ कुछ भी नहीं)

साइट व्यावहारिक रूप से यह समझाने के लिए अच्छा करती है कि क्या आवश्यक है और क्या अंतर है और साथ ही nginx के लिए एक अच्छा परिनियोजन उदाहरण है।


सुविधा के लिए, फ्लास्क विकि से स्पष्टीकरण यहाँ उद्धृत किया गया है:

uWSGI nginx, lighttpd, और cherokee जैसे सर्वरों पर एक परिनियोजन विकल्प है; अन्य विकल्पों के लिए FastCGI और स्टैंडअलोन WSGI कंटेनर देखें। UWSGI प्रोटोकॉल के साथ अपने WSGI एप्लिकेशन का उपयोग करने के लिए आपको पहले एक uWSGI सर्वर की आवश्यकता होगी। uWSGI एक प्रोटोकॉल और एक एप्लिकेशन सर्वर दोनों है; एप्लिकेशन सर्वर uWSGI, FastCGI और HTTP प्रोटोकॉल परोस सकता है।

सबसे लोकप्रिय uWSGI सर्वर uwsgi है, जिसका उपयोग हम इस गाइड के लिए करेंगे। इसका पालन करने के लिए इसे स्थापित करना सुनिश्चित करें।

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