Google App Engine पर Django का उपयोग क्यों करें?


88

Google App Engine (GAE) पर शोध करते समय, यह स्पष्ट है कि Django का उपयोग GAE पर पायथन में विकसित करने के लिए बेतहाशा लोकप्रिय है। मैं जांगो का उपयोग करने की लागत और लाभों के बारे में जानकारी प्राप्त करने के लिए वेब को दस्त कर रहा हूं, यह पता लगाने के लिए कि यह इतना लोकप्रिय क्यों है। मैं पर सूत्रों का कहना है की एक विस्तृत विविधता को खोजने के लिए कर पाए हैं कैसे GAE और ऐसा करने के विभिन्न तरीकों पर Django को चलाने के लिए, मैं इस पर कोई तुलनात्मक विश्लेषण नहीं मिला है क्यों Django गूगल द्वारा प्रदान की webapp ढांचे का उपयोग कर बेहतर है।

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

यह निर्धारित करना काफी मुश्किल है कि Django एक विकास टीम के लिए क्यों फायदेमंद है जब BigTable पुस्तकालयों ने Django के ORM को बदल दिया है, सत्र और प्रमाणीकरण आवश्यक रूप से बदल दिए गए हैं, और Django के टेंपलेटिंग (यदि वांछनीय) पूरे Djoc स्टैक का उपयोग किए बिना उपलब्ध है।

अंत में, यह स्पष्ट है कि Django का उपयोग करने से "निकास रणनीति" प्रदान करने का लाभ होता है अगर हम बाद में GAE से दूर जाना चाहते थे और पलायन के लिए लक्ष्य करने के लिए एक मंच की आवश्यकता थी।

मुझे यह बताने में मदद के लिए बेहद सराहना होगी कि जीएओ पर वेबप का उपयोग करने की तुलना में Django का उपयोग करना बेहतर क्यों है। मैं भी Django के साथ पूरी तरह से अनुभवहीन हूं, इसलिए छोटी सुविधाओं और / या उपयुक्तता पर विस्तार जो GAE पर काम करते हैं, मेरे लिए भी मूल्यवान हैं।


पवित्र बकवास टेरी ब्रैडशॉ कोड लिखता है?
वूट 4Moo

4
Django फायदेमंद है क्योंकि यह कमाल है। वाकई ऐसा है। :)
२२:०२

मैं Google ऐप इंजन के लिए भी नया हूं और यह 2018 के लिए भी एक बहुत अच्छा प्रश्न है (हालांकि Django ORM ऐसा लगता है कि GAE पर अभी बहुत बेहतर समर्थित है)। :)
दिविज सहगल

जवाबों:


19

हम अपने appengine उदाहरणों पर django का उपयोग ज्यादातर तब करते हैं जब हमें उपयोगकर्ता को वास्तविक वेबसाइटों की सेवा करनी होती है। इसमें एक शानदार टेम्पलेट इंजन, url रूटिंग और सभी अनुरोध / प्रतिक्रिया / त्रुटि हैंडलिंग अंतर्निहित हैं। इसलिए भले ही हम जादू orm / व्यवस्थापक सामग्री का उपयोग नहीं कर सकते हैं लेकिन इसके लिए बहुत कुछ है।

एपीआई सेवाओं के लिए हमने शीर्ष पर कुछ बहुत ही सरल बनाया है webob। यह कहीं अधिक हल्का है क्योंकि इसमें django की पेशकश की हर चीज की जरूरत नहीं है, और इसलिए कुछ स्थितियों में यह थोड़ा तेज है।


1
धन्यवाद Koen। Django की अपील के रूप में मेरे भ्रम का एक हिस्सा इस विचार से उपजा है कि url रूटिंग और रिक्वेस्ट / रिस्पॉन्स / एरर हैंडलिंग भी उपलब्ध वेबप की विशेषताएं थीं और यह कि टेम्प्लेट इंजन को Django के बिना भी वेबैप के साथ उपयोग किया जा सकता है। क्या मैं गलत हूं? क्या Django इन सेवाओं को वेबएप फ्रेमवर्क से बेहतर प्रदान करता है?
ट्रैविस ब्रैडशॉ

वे अधिक व्यापक और लचीले हैं django में मैं कहूंगा। तो यह बेहतर है अगर आपको वास्तव में आवश्यकता है कि :-)
Koen Bok

2
मुझे लगता है कि यह वह उत्तर है जिसकी मुझे तलाश है! वह Django वेबपेज के लिए काफी हद तक बेमानी है, लेकिन कार्यक्षमता में जो वे Django साझा करते हैं वह अधिक लचीले और मजबूत तरीके से करता है। ऐसा लगता है कि यह निश्चित रूप से "मार्जिन पर" एक निर्णय है, लेकिन मुझे लगता है कि अन्य सभी सुझाव, प्लस तुम्हारा, एक सम्मोहक जवाब के लिए बनाता है। धन्यवाद।
ट्रैविस ब्रैडशॉ

1
सी में लिखे गए पायथन मॉड्यूल का भी समर्थन नहीं किया जाता है।
Ryu_hayabusa

51

Django शायद आपके लिए सही विकल्प नहीं है, अगर आपको यकीन है कि GAE आपके लिए सही है। दो प्रौद्योगिकियों की ताकत बहुत अच्छी तरह से संरेखित नहीं होती है - आप पूरी तरह से जीएईओ पर बहुत सारे Django के अद्भुत orm को खो देते हैं, और यदि आप इसका उपयोग करते हैं, तो आप कोड लिखते हैं जो वास्तव में bigtable के लिए उपयुक्त नहीं है और जिस तरह से GAE काम करता है।

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

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

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

यह सब कहा गया है, जब तक कि आप पूरी तरह से सीमा-हास्यास्पद स्केलिंग की आवश्यकता नहीं करते हैं जो कि जीएई प्रदान करता है, मैं व्यक्तिगत रूप से सुझाव दूंगा कि उस विशेष सेवा संरचना को आपकी पसंद का ढांचा न दें। मुझे Django पसंद है, इसलिए मैं कहूंगा कि आपको इसका उपयोग करना चाहिए, लेकिन जीएई पर नहीं।

संपादित करें (जून 2010): कुछ समय बाद इस टिप्पणी के अपडेट के रूप में: Google ने GAE के लिए sql- जैसी क्षमता की घोषणा की है जो मुफ़्त नहीं है, लेकिन आपको अपने डेटा पर रिपोर्ट बनाने के लिए SQL- शैली कमांड चलाने जैसे काम आसानी से करने देगा।

इसके अतिरिक्त, GAE क्वेरी भाषा में आगामी परिवर्तन हैं जो जटिल प्रश्नों को बहुत आसान तरीके से अनुमति देगा। Google I / O 2010 के वीडियो देखें।

इसके अलावा, कोड 2010 प्रोजेक्ट के समर के दौरान काम किया जा रहा है, जो django कोर को कोई sql समर्थन नहीं लाना चाहिए, और विस्तार से, GAE के साथ काम करना काफी आसान बना देता है।

एक होस्टिंग प्लेटफॉर्म के रूप में GAE अधिक आकर्षक होता जा रहा है।

संपादित करें (अगस्त 2011):

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

बहुत कम लोगों को वास्तव में बिगडाट की समस्या होती है। "ओह मेरे स्टार्टअप किसी दिन बड़े पैमाने पर हो सकता है" एक बड़ी समस्या नहीं है। अब सामान बनाएँ और मानक उपकरण का उपयोग करके इसे बाहर निकाल दें।


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

आप विकास समय की लागत को कैसे आंकते हैं? Django के बारे में एक अच्छी बात यह है कि आप बिगबेट के साथ अपने डेटा मॉडल को परिभाषित करने के बारे में चिंता करने में कम समय व्यतीत करते हैं। बिगटेबल आपको उपयोग करने में सक्षम होने से पहले अपने उपयोग के बारे में अधिक स्पष्ट होने के लिए मजबूर करता है। "सामान्य" एसक्यूएल के साथ कुछ प्रश्न काफी आसान हैं।
पॉल मैकमिलन

3
ध्यान रखें कि पेनी को बहुत अधिक न डालें। नि: शुल्क अच्छा है, लेकिन सेवा तेजी से असली पैसे खर्च करती है। यदि आप सेवा के "नि: शुल्क" स्तर में तट कर रहे हैं, तो इसे किसी अन्य सर्वर / होस्ट पर होस्ट करें जो आप पहले से ही भुगतान कर रहे हैं। यदि आप सेवा के गैर-मुक्त स्तर में शामिल हो रहे हैं, तो VPS के लिए $ 20 / मो जिसे आप आसानी से बाद में स्केल कर सकते हैं लागत के रूप में दूर है।
पॉल मैकमिलन

11
tbradshaw, अपने डेटा सेट पर कितनी बार आपको तदर्थ रिपोर्ट चलाने की आवश्यकता होगी , इस पर विचार करना न भूलें। मैं एक बढ़ते सामाजिक अनुप्रयोग में शामिल हूं और जीएई बन रहा है ... मैं एक बुरा सपना नहीं कहूंगा, लेकिन यह हमारे डेटा से ज्ञान प्राप्त करने के लिए अत्यंत संसाधन-गहन है। Google के पुराने लॉग और सभी डेटा को स्वीप करने के लिए आवश्यक चरम लंबाई के बीच, यह रिपोर्टिंग तरीका, SQL db की तुलना में अधिक महंगा तरीका बनाता है। यह एक ऐसी लागत है जिसे मैंने शुरू करने पर विचार नहीं किया। दूसरे, यदि आप वास्तव में बढ़ते हैं और पैसा कमाना शुरू करते हैं, तो बैकअप से संबंधित नियंत्रण खो देता है, ठीक है, एक कारक।
जेसनस्मिथ

2
लॉक-इन चिंताओं के लिए, AppScale की जांच करें, जो एक Google ऐप इंजन क्लोन है। हम प्लेटफ़ॉर्म पर काम कर रहे हैं क्योंकि GAE पहली बार बाहर आया है और इसके उत्पादन अजगर और जावा अनुप्रयोगों के लिए कई उपयोगकर्ता हैं। आपके पास उन मशीनों तक सीधी पहुंच है जो इस पर चलती हैं ताकि बुनियादी ढांचे पर आपका अधिक नियंत्रण हो। github.com/AppScale/appscale.git
नवराज चैहान

16

मैंने GAE पर बहुत सारे प्रोजेक्ट किए हैं। कुछ django में, कुछ अपने सामान्य ढांचे में।

छोटी चीजों के लिए, मैं आमतौर पर सादगी और फुर्ती के लिए उनके सामान्य ढांचे का उपयोग करता हूं। जैसे http://stdicon.com , http://yaml-online-parser.appspot.com/ , या http://text-twist.appspot.com/

बड़ी चीजों के लिए, मैं सभी अच्छे मिडलवेयर और प्लगइन्स का लाभ लेने के लिए django के साथ जाता हूं। Http://metaward.com की तरह ।

मूल रूप से मेरा लिटमस टेस्ट है क्या मुझे लिखने और वास्तविक सॉफ्टवेयर प्रोजेक्ट होने में 2 सप्ताह से अधिक समय लगेगा ? यदि हां, तो addons के लिए django के साथ जाएं।

इसका अतिरिक्त लाभ है, यदि आपका प्रोजेक्ट बिगटेबल के लिए बुरी तरह से अनुकूल है तो आप जल्दी से पोर्ट ऑफ कर दें (जैसे मैंने बिगटेबल को धीमा कर दिया है या मैं गूंगा हूं? )


+1, बिगटेबल कुछ प्रकार की परियोजनाओं और प्रश्नों के लिए खराब है। यह Google के लिए बहुत अच्छा है और आप जो करना चाहते हैं उसके लिए भयानक हो सकता है।
पॉल मैकमिलन

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

2
मूल रूप से कोई भी ऐडऑन जिसके पास कोई माडल थ्रीडीम नहीं है वह पूरी तरह से काम करेगा और अगर उनके पास एक मॉडल है तो आप शायद 1-टू -1 रूपांतरण बिगटेबल में कर सकते हैं और फिर भी यदि आप चाहें तो इसका उपयोग कर सकते हैं। कुछ मैं उपयोग django_annoying, django_debug_toolbar, और contrib अनुभाग से सीएसआरएफ, मानवीकरण, और निश्चित रूप से व्यवस्थापक हैं।
पॉल टारजन

11

मुझे लगता है कि यह सभी उत्तर थोड़े अप्रचलित हैं।

अब आप उपयोग कर सकते हैं Google Cloud SQL

Django एक लोकप्रिय तृतीय-पक्ष पायथन वेब फ्रेमवर्क है। जब Google क्लाउड एसक्यूएल के साथ युग्मित किया जाता है, तो इसकी सभी कार्यक्षमता पूरी तरह से ऐप इंजन पर चलने वाले अनुप्रयोगों द्वारा समर्थित हो सकती है । Django के साथ Google क्लाउड SQL का उपयोग करने के लिए समर्थन एक कस्टम Django डेटाबेस बैकएंड द्वारा प्रदान किया जाता है जो Django के MySQL बैकेंड को लपेटता है।

https://cloud.google.com/python/django/appengine

एक और ताजा खबर यह है, कि PostgreSQL का बीटा समर्थन है


3

मुझे Django और GAE का उपयोग करने का अनुभव है। Django के साथ मेरे अनुभवों से यह एक बहुत ही सरल सेटअप था और तैनाती की प्रक्रिया वेब परियोजनाओं के मामले में अविश्वसनीय रूप से आसान थी। दी मैं वास्तव में चीजों पर एक अच्छी पकड़ पाने के लिए अजगर सीखना था, लेकिन दिन के अंत में मैं इसे फिर से एक परियोजना पर उपयोग करेगा। यह लगभग 2 साल पहले 1.0 तक पहुंचने से पहले था, इसलिए मुझे पता है कि मेरा ज्ञान थोड़ा पुराना है।

यदि आप प्लेटफार्मों को बदलने के बारे में चिंतित हैं, तो यह एक बेहतर विकल्प होगा जो मुझे लगता है।


1
अपनी त्वरित प्रतिक्रिया के लिए धन्यवाद! जबकि मैं मानता हूं कि Django एक ऐसा ढांचा है जो आरंभ करने के लिए तेज है, यह वास्तव में हमारे लिए चिंता का विषय नहीं है। हमारे पास वेब विकास पृष्ठभूमि के साथ चार काफी अनुभवी पायथन डेवलपर्स हैं, इसलिए किसी भी ढांचे के साथ शुरुआत करना जल्दी और दर्द रहित होने वाला है। लेकिन सवाल यह है कि जीएई पर Django और वेबैप के बीच चयन करते समय, बेहतर विकल्प कौन है और क्यों ?
ट्रैविस ब्रैडशॉ

@ Woot4Moo अगर जीएई के साथ कोई अनुभव नहीं था, तो आप इसे तैनात करते हैं, मैं जीएई के लिए नया हूं, लेकिन कीमत मुझे काफी भ्रमित कर रही है, यादृच्छिक ह्यूग चार्ज, मैं सोच रहा हूं कि पाइथोन्याइन, क्या आप मेरी सिफारिशें पारित कर सकते हैं?
मैन्जा

0

मैं इस सवाल का जवाब नहीं दे सकता, लेकिन आप web2py में देखना चाहते हैं। यह कई मामलों में Django के समान है लेकिन इसका डेटाबेस अमूर्त परत GAE पर काम करता है और ज्यादातर GAE कार्यक्षमता का समर्थन करता है (सभी नहीं लेकिन हम पकड़ने की कोशिश करते हैं)। इस तरह से यदि GAE आपके लिए बहुत अच्छा काम करता है, यदि यह नहीं होता है, तो आप अपने कोड को एक अलग db (SQLite, MySQL, PostgreSQL, Oracle, MSSQL, FireBird, DB2, Informix, Ingres, और - जल्द ही - Sybase और MongoDB पर ले जा सकते हैं )।


0

यदि आप GAE के बाहर आपको ऐप चलाने का निर्णय लेते हैं, तो भी आप Django का उपयोग कर सकते हैं। आपके पास वास्तव में GAE वेबएप के साथ इतना सौभाग्य नहीं होगा


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

0

मैं अभी भी Google App इंजन के विकास के लिए बहुत नया हूं, लेकिन इंटरफेस Django प्रदान करता है डिफ़ॉल्ट रूप से बहुत अच्छे लगते हैं। लाभ इस बात पर निर्भर करेगा कि आप ऐप इंजन पर Django चलाने के लिए क्या उपयोग कर रहे हैं। Django के लिए Google ऐप इंजन हेल्पर आपको Google ऐप इंजन की पूरी शक्ति का उपयोग करने की अनुमति देता है जिसमें कुछ Django कार्यक्षमता है।

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

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