2012-09-04 49 views

回答

15

基本上沒有。內置的開發服務器在生產環境中部署不安全。

內置開發服務器就是爲了這一點。爲了在生產中使用,您應該遵循詳細的步驟here之一。

這些包括實現WSGI規範不同的服務器,如Apache/mod_wsgi或這些獨立WSGI服務器http://flask.pocoo.org/docs/deploying/wsgi-standalone/

一個也有提供

+2

是否有可能得到2014年更新到這個答案?「基本上不」是含糊不清的,因爲+ ensnare問了兩個問題。 –

+0

已更新答案以消除歧義。答案的其餘部分似乎仍然是完全有效的。鏈接仍然指向最新的燒瓶文檔。 –

41

沒有uWSGIFastCGI選項。捆綁的服務器是開發服務器。它的設計不考慮生產環境。

  • 默認情況下,它一次不會處理多個請求。
  • 如果您打開調試模式並彈出一個錯誤消息,它會打開一個允許在您的服務器上執行任意代碼的shell(想想os.system('rm -rf /'))。
  • 開發服務器不能很好地擴展。

瓶使用WERKZEUG的發展服務器,文件說,同樣的事情:

開發服務器是不是要在生產系統中使用。它是專門爲開發目的而設計的,在高負載下表現不佳。部署設置請看Application Deployment頁面。

推薦的方法是使用use a production WSGI server來運行您的Flask應用程序。有一整個章節專門部署在文檔:Deployment Options


如果你是服務如圖片或視頻的任何靜態資產,需要低級別的緩存,或有更高的併發性的要求,建議使用一個Web服務器像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

我使用'supervisor' +'gunicorn' +'nginx'。這是很容易安裝和維護。 –

+0

「它一次不會處理多個請求」 - 不正確,請參閱線程和處理參數:http://werkzeug.pocoo.org/docs/0.11/serving/ – HaveAGuess

+0

「如果彈出錯誤,它會打開建立一個允許在你的服務器上執行任意代碼的shell「 - 不是debug = True模式嗎? – HaveAGuess

相關問題