2012-09-04 3 views

Antwort

15

Grundsätzlich keine. Der integrierte Entwicklungsserver ist nicht sicher für die Bereitstellung in einer Produktionsumgebung.

Der eingebaute Entwicklung Server ist für genau das. Zur Verwendung in der Produktion sollten Sie einen der detaillierten Schritte here befolgen. Diese

umfassen verschiedene Server, die die WSGI Spezifikation implementieren, wie Apache/mod_wsgi oder eines dieser eigenständigen wsgi Server http://flask.pocoo.org/docs/deploying/wsgi-standalone/

Es gibt auch uWSGI und FastCGI Optionen

+2

Ist es möglich, ein Update 2014 zu dieser Antwort zu erhalten?Das "im Grunde nein" ist mehrdeutig, da + ennsnare zwei Fragen stellt. –

+0

aktualisierte Antwort, um Mehrdeutigkeit zu entfernen. Der Rest der Antwort scheint immer noch einwandfrei zu sein. Links zeigen immer noch auf neueste Flaschendokumente. –

41

Kein. Der mitgelieferte Server ist ein Entwicklung Server. Es wurde nicht für Produktionsumgebungen entwickelt.

  • Es wird standardmäßig nicht mehr als eine Anfrage gleichzeitig verarbeitet.
  • Wenn Sie den Debug-Modus eingeschaltet lassen und ein Fehler auftritt, öffnet sich eine Shell, die die Ausführung von beliebigem Code auf Ihrem Server ermöglicht (denken Sie an os.system('rm -rf /')).
  • Der Entwicklungsserver skaliert nicht gut.

Flask verwendet Werkzeug der Entwicklungsserver und die Dokumentation sagt das Gleiche:

Der Entwicklungsserver ist nicht beabsichtigt, auf Produktionssystemen eingesetzt werden. Es wurde speziell für Entwicklungszwecke entwickelt und arbeitet unter hoher Belastung schlecht. Für Deployment-Setups schauen Sie sich die Application Deployment Seiten an.

Der empfohlene Ansatz ist use a production WSGI server, um Ihre Flask-Anwendung auszuführen. Es gibt einen ganzen Abschnitt in der Dokumentation zu Einsatz gewidmet: Deployment Options


Wenn Sie statische Assets wie Bilder oder Videos dienen, müssen Low-Level-Caching, oder haben eine höhere Parallelität Anforderungen, ist es empfehlenswert, einen Webserver zu verwenden, wie nginx und lassen Sie es alle Ihre Anfragen behandeln.

In crappy ASCII-Form:

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

Um tatsächlich laufen der WSGI-Server-Prozess, können Sie Supervisor verwenden. Es startet den Server automatisch neu, wenn es aus irgendeinem Grund fehlschlägt, protokolliert und wird als Daemon ausgeführt, damit der Dienst beim Systemstart gestartet wird.

+1

Ich benutze 'Supervisor' +' Gunicorn' + 'nginx'. Es ist wirklich einfach einzurichten und zu warten. –

+0

"Es wird nicht mehr als eine Anfrage zu einem Zeitpunkt bearbeiten" - nicht wahr, siehe Threaded und verarbeitet Argumente: http://werkzeug.poooo.org/docs/0.11/serving/ – HaveAGuess

+0

"Wenn ein Fehler auftaucht, öffnet es up eine Shell, die es erlaubt, dass beliebiger Code auf Ihrem Server ausgeführt wird "- ist das nicht debug = True mode? – HaveAGuess

Verwandte Themen