2011-02-08 17 views
74

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

यह वास्तव में सादे अंग्रेजी में क्या है?

क्या यह सिर्फ टर्मिनल पर पाइप अनुरोध करता है और आउटपुट को रीडायरेक्ट करता है?

+2

http://stackoverflow.com/questions/219110/how-python-web-frameworks-wsgi-and-cgi-fit- साथ में –

उत्तर

43

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

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

+9

WSGI! = Mod_wsgi। आपकी भाषा का सुझाव है कि आप mod_wsgi का मतलब है जो डब्लूएसजीआई का कार्यान्वयन है। डब्लूएसजीआई स्वयं केवल एक विनिर्देश है और सीजीआई के शीर्ष सहित कई अलग-अलग तरीकों से लागू किया जा सकता है। –

+0

@ ग्राहम: क्या आप कह रहे हैं कि ऐसे कोई अन्य डब्लूएसजीआई कंटेनर नहीं हैं जो उन तरीकों से चल रहे डब्लूएसजीआई ऐप्स का समर्थन करते हैं? –

+2

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

13

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

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

भाग एक:: वेब सर्वर

वेब सर्वर प्रतिक्रियाओं सेवा

173

एक पूरी तरह से कदम वापस दृष्टि से, Blankman, यहाँ वेब सेवा गेटवे इंटरफेस के लिए मेरे "परिचय पृष्ठ" है। वे चारों ओर बैठते हैं, धैर्यपूर्वक इंतजार करते हैं, और फिर बिना किसी चेतावनी के, अचानक:

  • क्लाइंट प्रक्रिया एक अनुरोध भेजती है। ग्राहक प्रक्रिया एक वेब सर्वर, एक बॉट, एक मोबाइल ऐप, जो कुछ भी हो सकता है। यह बस "ग्राहक" है
  • वेब सर्वर इस अनुरोध
  • जानबूझकर बुदबुदाना विभिन्न बातें होती प्राप्त करता है (नीचे देखें)
  • वेब सर्वर वापस ग्राहक के लिए कुछ भेजता
  • वेब सर्वर फिर से चारों ओर बैठता है

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

यह मेरा मुद्दा है: वेब सर्वर बस यही हैं: सर्वर। वे सामग्री के बारे में कुछ भी नहीं जानते हैं, उपयोगकर्ताओं के बारे में कुछ नहीं, वास्तव में कुछ भी इंतजार करने और भरोसेमंद जवाब देने के अलावा कुछ भी नहीं।

वेब सर्वर की आपकी पसंद को आपकी डिलीवरी वरीयता को प्रतिबिंबित करना चाहिए, न कि आपके सॉफ़्टवेयर। आपका वेब सर्वर सेवा, प्रसंस्करण या लॉजिकल सामान की सेवा करने का प्रभारी होना चाहिए।

भाग दो: (Python) सॉफ्टवेयर

सॉफ्टवेयर के आसपास बैठते हैं नहीं करता है। सॉफ्टवेयर केवल निष्पादन समय पर मौजूद है। जब सॉफ्टवेयर में अप्रत्याशित परिवर्तन की बात आती है तो सॉफ़्टवेयर बहुत ही अनुकूल नहीं होता है (फाइलें जहां यह अपेक्षा नहीं करती हैं, पैरामीटर का नाम बदलकर इत्यादि)। हालांकि ऑप्टिमाइज़ेशन आपके डिज़ाइन का एक केंद्रीय सिद्धांत होना चाहिए (बेशक), सॉफ़्टवेयर स्वयं अनुकूलित नहीं होता है। डेवलपर्स अनुकूलित करें। सॉफ्टवेयर निष्पादित करता है। सॉफ़्टवेयर उपरोक्त 'जानबूझकर गड़बड़' अनुभाग में सभी चीजें करता है। कुछ भी हो सकता है।

सॉफ़्टवेयर की आपकी पसंद या डिज़ाइन को आपके एप्लिकेशन, कार्यक्षमता की अपनी पसंद, और वेब सर्वर की अपनी पसंद को प्रतिबिंबित नहीं करना चाहिए।

यह वह जगह है जहां वेब सर्वर पर "संकलित" भाषाओं की पारंपरिक विधि दर्दनाक हो जाती है। भौतिक सर्वर वातावरण से निपटने के लिए आप अपने आवेदन में कोड डालते हैं या कम से कम, वेब सर्वर पर एकरूपता के भ्रम को देने के लिए रनटाइम में शामिल करने के लिए उचित 'रैपर' लाइब्रेरी चुनने के लिए मजबूर होना पड़ता है।

तो डब्ल्यूएसजीआई क्या है?

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

वेब सर्वर पक्ष के लिए लिखा गया पहला भाग कहता है, "ठीक है, अगर आप डब्लूएसजीआई एप्लिकेशन से निपटना चाहते हैं, तो यह पता चलता है कि सॉफ़्टवेयर लोड होने पर सोच रहा होगा। यहां उन चीजें हैं जिन्हें आपको उपलब्ध कराया जाना चाहिए आवेदन, और यहां इंटरफ़ेस (लेआउट) है जिसे आप प्रत्येक एप्लिकेशन की अपेक्षा कर सकते हैं। इसके अलावा, अगर कुछ भी गलत हो जाता है, तो यहां ऐप कैसा सोच रहा है और आप इसे कैसे व्यवहार कर सकते हैं। "

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

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

mod_wsgi, दूसरे हाथ पर, यह WSGI अनुरूप सॉफ्टवेयर से बात करने देता है कि अपाचे के लिए एक प्लगइन है, दूसरे शब्दों में, mod_wsgi एक कार्यान्वयन है ऊपर नियम पुस्तिका के भाग एक के नियमों के ।

सीजीआई का सवाल है .... :-)

+7

इस उत्तर को "किसी और से पूछें" के साथ समाप्त करने की बजाय, मेरी इच्छा है कि कोई भी इस जवाब को सीजीआई को उसी तरीके से शामिल करने के लिए संपादित करेगा। –

12

किसी और से पूछने आप इस क्षेत्र में सभी शर्तों पर स्पष्ट नहीं कर रहे हैं, तो और क्यों न हम स्वीकार करते हैं, यह एक भ्रामक परिवर्णी शब्द से लदी एक है, वहाँ भी एक अच्छी बात है official python HOWTO के रूप में पृष्ठभूमि पाठक जो सीजीआई बनाम फास्टसीजीआई बनाम डब्लूएसजीआई और अन्य पर चर्चा करता है। काश मैं इसे पहले पढ़ूंगा।

+0

वह लिंक अब मृत है :( – ShankarG

+1

https://docs.python.org/2/howto/webservers.html अभी काम करता है। – Scott

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