2012-09-04 18 views
35

क्या सर्वर एक उत्पादन वातावरण में तैनाती के लिए फ्लास्क सुरक्षित के साथ बंडल किया गया है? यदि नहीं, तो उत्पादन में फ्लास्क तैनात करने के लिए मुझे क्या उपयोग करना चाहिए?क्या सर्वर उत्पादन में उपयोग करने के लिए फ्लास्क सुरक्षित के साथ बंडल किया गया है?

उत्तर

15

असल में, नहीं। अंतर्निहित विकास सर्वर उत्पादन वातावरण में तैनाती के लिए सुरक्षित नहीं है।

निर्मित विकास सर्वर बस यही है। उत्पादन में उपयोग के लिए आपको विस्तृत चरणों में से एक का पालन करना चाहिए।

ये Apache/mod_wsgi या इन स्टैंड-अलोन WSGI सर्वर http://flask.pocoo.org/docs/deploying/wsgi-standalone/

में से एक के रूप में विभिन्न सर्वर WSGI विनिर्देश लागू, वहाँ भी uWSGI और FastCGI विकल्प उपलब्ध

+2

क्या इस उत्तर के लिए 2014 अपडेट प्राप्त करना संभव है?"मूल रूप से नहीं" संदिग्ध है क्योंकि + ensnare दो प्रश्न पूछता है। अस्पष्टता को हटाने के लिए –

+0

अद्यतन उत्तर। शेष teh उत्तर अभी भी पूरी तरह से मान्य लगता है। लिंक अभी भी नवीनतम फ्लास्क दस्तावेज़ों को इंगित करते हैं। –

41

नहीं शामिल हैं। बंडल सर्वर विकास सर्वर है। यह उत्पादन वातावरण के साथ दिमाग में डिजाइन नहीं किया गया है।

  • यह डिफ़ॉल्ट रूप से एक से अधिक अनुरोधों को एक साथ संभाल नहीं करेगा।
  • यदि आप डीबग मोड छोड़ते हैं और एक त्रुटि पॉप अप हो जाती है, तो यह एक खोल खोलता है जो आपके सर्वर पर मनमाने ढंग से कोड निष्पादित करने की अनुमति देता है (os.system('rm -rf /') सोचें)।
  • विकास सर्वर अच्छी तरह से स्केल नहीं करता है।

बोतल WERKZEUG के विकास सर्वर का उपयोग करता है, और प्रलेखन एक ही बात कहते हैं:

विकास सर्वर उत्पादन प्रणाली पर इस्तेमाल किया जा करने का इरादा नहीं है। यह विशेष रूप से विकास के उद्देश्यों के लिए बनाया गया था और उच्च भार के तहत खराब प्रदर्शन करता है। तैनाती सेटअप के लिए Application Deployment पृष्ठों पर एक नज़र डालें।

आपके फ्लास्क एप्लिकेशन को चलाने के लिए अनुशंसित दृष्टिकोण use a production WSGI server है। ऐसा और भी खंड डॉक्स में तैनाती के लिए समर्पित है: Deployment Options


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

भद्दा ASCII रूप में:

   +----------+ 
       | Client 2 | 
       +----------+ 
         | 
         V 
+----------+  +-------+  +----------+ 
| Client 1 |----->| nginx |<-----| Client 3 | 
+----------+  +-------+  +----------+ 
        ^
         | 
         V 
      /--------------------\ 
      | useful nginx stuff | 
      | like asset serving | 
      | and rate limiting | 
      \--------------------/ 
         | 
         V 
       +-------------+ 
       | WSGI server | 
       +-------------+ 

वास्तव में रन WSGI सर्वर प्रक्रिया, आप Supervisor उपयोग कर सकते हैं करने के लिए। यह स्वचालित रूप से सर्वर को पुनरारंभ करता है अगर यह किसी कारण से विफल रहता है, लॉग रखता है, और एक डिमन के रूप में चलता है ताकि सर्वर बूट होने पर आपकी सेवा शुरू हो जाए।

+1

मैं 'पर्यवेक्षक' + 'गनिकोर्न' + 'nginx' का उपयोग करता हूं। सेटअप और रखरखाव करना वास्तव में आसान है। –

+0

"यह एक समय में एक से अधिक अनुरोधों को संभाल नहीं पाएगा" - सच नहीं, थ्रेडेड और प्रक्रियाओं को संसाधित करते हैं: http://werkzeug.pocoo.org/docs/0.11/serving/ – HaveAGuess

+0

"अगर कोई त्रुटि खुलती है, तो यह खुलती है एक खोल खोलें जो आपके सर्वर पर मनमाने ढंग से कोड निष्पादित करने की अनुमति देता है "- क्या वह डीबग = सही मोड नहीं है? – HaveAGuess

0

हल्के वजन और उपयोग करने में आसान होने पर, फ्लास्क का अंतर्निर्मित सर्वर उत्पादन के लिए उपयुक्त नहीं है क्योंकि यह अच्छी तरह से स्केल नहीं करता है और डिफ़ॉल्ट रूप से एक समय में केवल एक ही अनुरोध करता है। http://flask.pocoo.org/docs/0.12/deploying/

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