2011-07-21 26 views
107

के लिए फ्लास्क बनाम वेबएप 2 मैं नया Google ऐप इंजन एप्लिकेशन शुरू कर रहा हूं और वर्तमान में दो ढांचे पर विचार कर रहा हूं: Flask और webapp2। मैं अंतर्निहित वेबपैप फ्रेमवर्क से संतुष्ट हूं जिसे मैंने अपने पिछले ऐप इंजन एप्लिकेशन के लिए उपयोग किया है, इसलिए मुझे लगता है कि वेबएप 2 भी बेहतर होगा और मुझे इसके साथ कोई समस्या नहीं होगी।Google App Engine

हालांकि, फ्लास्क की बहुत अच्छी समीक्षाएं हैं, मुझे वास्तव में इसके दृष्टिकोण और सभी चीजें जिन्हें मैंने प्रलेखन में पढ़ा है और मैं इसे आजमा देना चाहता हूं। लेकिन मैं सीमाओं के बारे में चिंतित हूं कि मैं फ्लास्क के साथ सड़क का सामना कर सकता हूं।

तो सवाल यह है कि - क्या आपको कोई समस्या, प्रदर्शन समस्याएं, सीमाएं (जैसे रूटिंग सिस्टम, अंतर्निहित प्राधिकरण तंत्र इत्यादि) पता है कि फ्लास्क Google App Engine एप्लिकेशन में ला सकता है? "समस्या" से मेरा मतलब कुछ है कि मैं कोड की कई पंक्तियों (या किसी भी उचित मात्रा में कोड और प्रयासों) या पूरी तरह से असंभव कुछ में काम नहीं कर सकता।

और एक अनुवर्ती प्रश्न के रूप में: क्या फ्लास्क में कोई हत्यारा-विशेषताएं हैं जो आपको लगता है कि मेरे दिमाग को उड़ा सकता है और मुझे किसी भी समस्या का सामना करने के बावजूद इसका उपयोग कर सकता है?

+0

मैं webapp2 बारे में ज्यादा पता नहीं है, लेकिन मैं कुछ महीनों के लिए बोतल का उपयोग किया गया है और मैं इसे प्यार करता हूँ। मुझे फ्लास्क प्लगइन्स मिले जो वास्तव में मेरी मदद करने के लिए सीएसआरएफ समर्थन के लिए 'फ्लास्क-बेबेल' जैसे कई भाषा समर्थन के लिए 'फ्लास्क-बेबेल' और 'फ्लास्क-सीसुरफ' जैसे मेरी मदद करता है। – ThePloki

उत्तर

135

अस्वीकरण: मैं tipfy और webapp2 के लेखक हूं।

वेबएप (या इसके प्राकृतिक विकास, वेबएप 2) के साथ चिपकने का एक बड़ा फायदा यह है कि आपको अपनी पसंद के ढांचे के लिए मौजूदा एसडीके हैंडलर के लिए अपने संस्करण बनाने की ज़रूरत नहीं है।

उदाहरण के लिए, deferred एक वेबैप हैंडलर का उपयोग करता है। Werkzeug.Request और werkzeug.Response का उपयोग करके, इसे शुद्ध फ्लास्क दृश्य में उपयोग करने के लिए, आपको इसके लिए स्थगित करने की आवश्यकता होगी (जैसे मैंने here tipfy के लिए किया था)।

अन्य हैंडलरों के लिए भी ऐसा ही होता है: ब्लॉबस्टोर (वर्कज़ेग अभी भी रेंज अनुरोधों का समर्थन नहीं करता है, इसलिए यदि आप अपना स्वयं का हैंडलर बनाते हैं तो भी आपको वेबओबी का उपयोग करने की आवश्यकता होगी - tipfy.appengine.blobstore देखें), मेल, एक्सएमपीपी और इसी तरह, या अन्य जो भविष्य में एसडीके में शामिल हैं।

और यह ऐप इंजन के साथ बनाए गए पुस्तकालयों के लिए भी होता है, जैसे कि ProtoRPC, जो वेबएप पर आधारित है और अन्य फ्रेमवर्क के साथ काम करने के लिए पोर्ट या एडाप्टर की आवश्यकता होगी, यदि आप वेबपैप और अपने- एक ही ऐप में फ्रेमवर्क-ऑफ-पसंद हैंडलर।

तो, यदि आप एक अलग ढांचे का चयन करते हैं, तो आप कुछ विशेष मामलों में वेबपैप का उपयोग कर सकते हैं या बी) विशिष्ट एसडीके हैंडलर या सुविधाओं के लिए अपने संस्करण बनाने और बनाए रखने के लिए, यदि आप उनका उपयोग करेंगे।

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

एक विशिष्ट वेबपैप रक्षा here सारांशित है। उन लोगों को जोड़ें जो webapp2 can be used outside of App Engine और easy to be customized to look like popular micro-frameworks है और आपके पास इसके लिए जाने के लिए आकर्षक कारणों का एक अच्छा सेट है। साथ ही, वेबएप 2 के भविष्य में एसडीके रिलीज में शामिल होने का एक बड़ा मौका है (यह अतिरिक्त आधिकारिक है, मुझे उद्धृत न करें :-) जो इसे आगे बढ़ाएगा और नए डेवलपर्स और योगदान लाएगा।

उसने कहा, मैं वर्कज़ुग और पोको लोगों का एक बड़ा प्रशंसक हूं और फ्लास्क और अन्य (web.py, टोरनाडो) से बहुत उधार लिया है, लेकिन - और, आप जानते हैं, मैं पूर्वाग्रहित हूं - उपरोक्त webapp2 लाभों को ध्यान में रखा जाना चाहिए।

+10

धन्यवाद, @moraes! पर्याप्त ठोस मुझे लगता है कि ब्लॉबस्टोर, मेल (और शायद प्रोोटोआरपीसी) जैसी चीजें उस परियोजना के लिए काफी महत्वपूर्ण टुकड़े हैं, और मैं उनके साथ आसानी से काम करना चाहता हूं। साथ ही, मुझे लगता है कि अलग-अलग ढांचे को मिश्रित करना सबसे अच्छा विचार नहीं है यदि आप आसानी से इससे बच सकते हैं। इसके अलावा, तथ्य के बावजूद मैं फ्लास्क के साथ सहानुभूति व्यक्त करता हूं, मैं वास्तव में वेबपैप 2 से प्रभावित हूं और इसे अपने हाथों से खोलने के लिए खुजली कर रहा हूं। उत्तर के लिए और webapp2 के लिए धन्यवाद! –

+0

@moraes अपाचे के साथ webapp2 चलाने के लिए संभव है? कोई लिंक? – 18bytes

+3

@ सुंदर यह किसी भी डब्लूएसजीआई-अनुरूप वेब सर्वर पर चला सकता है। अपाचे के लिए http://code.google.com/p/modwsgi/ और अन्य हैं। – moraes

12

आपका प्रश्न बेहद व्यापक है, लेकिन Google App Engine पर Flask का उपयोग करके कोई बड़ी समस्या नहीं प्रतीत होती है।

कई टेम्पलेट्स के लिए यह मेलिंग सूची धागा लिंक:,

http://www.franciscosouza.com/2010/08/flying-with-flask-on-google-app-engine/

इसके अलावा, App Engine - Difficulty Accessing Twitter Data - Flask देखें:

http://flask.pocoo.org/mailinglist/archive/2011/3/27/google-app-engine/#4f95bab1627a24922c60ad1d0a0a8e44

और यहाँ एक ट्यूटोरियल बोतल/App इंजन संयोजन के लिए विशिष्ट है फ्लास्क और Google ऐप इंजन के साथ लोगों के मुद्दों के लिए Flask message flashing fails across redirects, और How do I manage third-party Python libraries with Google App Engine? (virtualenv? pip?)

+6

धन्यवाद, @agf। मैंने पहले इनमें से अधिकांश पोस्ट देखी हैं, लेकिन मुझे लगता है कि मैं व्यक्तिगत अनुभव में अधिक रुचि रखता हूं। मुझे नहीं लगता कि सवाल इतना व्यापक है, क्योंकि मुझे किसी समस्या के बारे में व्यापक चर्चा या विस्तृत जानकारी में रूचि नहीं है, बस मुझे बताएं कि यह और यह लागू करना कठिन या असंभव होगा। –

+2

@ एंटन, व्यक्तिपरक व्यक्तिगत अनुभव का अनुरोध [प्रश्न पूछने के लिए] [http://stackoverflow.com/faq#dontask) के लिए एसओ दिशानिर्देशों के बहुत करीब है। – James

+6

@ जेम्स - सहमत नहीं है। मैं आपको अपने अनुमानों, धारणाओं या व्यक्तिपरक भावनाओं के बारे में नहीं पूछता हूं। मैं आपके अनुभव के बारे में पूछता हूं, यानी * तथ्यों * के बारे में जो आप आत्मविश्वास से जानते हैं। अप्रचलित पदों, न ही अन्य लोगों को भारी अनुकूलन के दौरान सामना करने वाली समस्याएं, केवल तथ्यों। सहमत नहीं है - ठीक है, बस इसे ध्वजांकित करें। –

1

मैंने वेबपैप 2 का प्रयास नहीं किया और पाया कि टिपफ़ी का उपयोग करना मुश्किल था क्योंकि इसे सेटअप स्क्रिप्ट की आवश्यकता थी और यह आपके पाइथन इंस्टॉलेशन को डिफ़ॉल्ट रूप से कॉन्फ़िगर करने के लिए बनाता है। इन और अन्य कारणों से मैंने अपनी सबसे बड़ी परियोजना को ढांचे पर निर्भर नहीं किया है और इसके बजाय मैं सादा वेबपैप का उपयोग करता हूं, सत्र क्षमता प्राप्त करने के लिए बीकर नामक लाइब्रेरी को जोड़ता हूं और django पहले से ही कई उपयोगों के लिए सामान्य शब्दों के लिए अनुवादित अनुवाद करता है ताकि एक स्थानीयकृत आवेदन django मेरी सबसे बड़ी परियोजना के लिए सही विकल्प था। मैं वास्तव में उत्पादन वातावरण में परियोजनाओं के साथ तैनात 2 अन्य ढांचे GAEframework.com और web2py थे और आम तौर पर ऐसा लगता है कि एक फ्रेमवर्क जो इसके टेम्पलेट इंजन को बदलता है, पुराने और नए संस्करणों के बीच असंगतताओं का कारण बन सकता है।

तो मेरा अनुभव यह है कि मैं अपनी परियोजनाओं में एक ढांचा जोड़ने के लिए अनिच्छुक हूं, जब तक वे अधिक उन्नत उपयोग मामलों को हल नहीं करते हैं (फ़ाइल अपलोड, बहु लेख, व्यवस्थापक ui अधिक उन्नत उपयोग मामलों के 3 उदाहरण हैं जिनके लिए कोई ढांचा नहीं है इस समय gae अच्छी तरह से संभालती है

2

मुझे लगता है कि गूगल एप इंजन आधिकारिक तौर पर कुप्पी ढांचे का समर्थन करता है वहाँ एक नमूना कोड और ट्यूटोरियल यहाँ है -।। जब मुझे पता चला कि कुप्पी है webapp2 के लिए निर्णय आसान था>https://console.developers.google.com/start/appengine?_ga=1.36257892.596387946.1427891855

+0

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

2

मेरे लिए ऑब्जेक्ट-ओरिएंटेड फ्रेमवर्क (शुरुआत से) नहीं, जबकि वेबएप 2 एक शुद्ध ऑब्जेक्ट उन्मुख फ्रेमवर्क है। वेबएप 2 सभी अनुरोध एच के लिए मानक आधारित डिस्पैचिंग मानक के रूप में उपयोग करता है एंडलर (फ्लास्क प्रलेखन के रूप में इसे कॉल करता है और इसे विधिवृत्त में V0.7 के बाद लागू करता है)। फ्लास्क में जबकि MethodViews एक ऐड-ऑन है, यह वेबapp2 के लिए एक कोर डिज़ाइन सिद्धांत है। तो आपका सॉफ़्टवेयर डिज़ाइन दोनों ढांचे का उपयोग करके अलग दिखाई देगा। दोनों ढांचे आजकल jinja2 टेम्पलेट्स का उपयोग करते हैं और काफी समान हैं।

मैं बेस-क्लास RequestHandler में सुरक्षा जांच जोड़ना पसंद करता हूं और इससे प्राप्त करता हूं। यह उपयोगिता कार्यों आदि के लिए भी अच्छा है। जैसा कि आप लिंक [3] में उदाहरण के लिए देख सकते हैं, आप अनुरोध भेजने को रोकने के लिए विधियों को ओवरराइड कर सकते हैं।

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

  1. http://flask.pocoo.org/docs/0.10/views/#method-based-dispatching
  2. https://webapp-improved.appspot.com/guide/handlers.html
  3. https://webapp-improved.appspot.com/guide/handlers.html#overriding-dispatch
+0

यह है, ओओपी समर्थन ने मुझे जीता। मैं मूल रूप से web.py का उपयोग करता हूं लेकिन webapp2 में वेबवर्क पर किए गए वर्कअराउंड के बिना साफ संरचना है। फ्लास्क शुरू करना आसान हो सकता है, लेकिन यदि आप बड़े ऐप्स बनाने की योजना बना रहे हैं तो आपको उससे अधिक की आवश्यकता है –