Ist der mit Flask gebündelte Server für den Einsatz in einer Produktionsumgebung sicher? Wenn nicht, was sollte ich verwenden, um Flask in der Produktion einzusetzen?Ist der mit Flask gebündelte Server sicher in der Produktion?
Antwort
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/
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.
Ich benutze 'Supervisor' +' Gunicorn' + 'nginx'. Es ist wirklich einfach einzurichten und zu warten. –
"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
"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
Obwohl der integrierte Flask-Server leicht und einfach zu bedienen ist, eignet er sich nicht für die Produktion, da er nicht gut skaliert werden kann und standardmäßig nur eine Anfrage gleichzeitig bedient. http://flask.pocoo.org/docs/0.12/deploying/
- 1. Einsatz von Flask unter Windows in der Produktion
- 2. Ist php: // temp sicher für die Produktion?
- 3. Einrichten der Entwicklung/Produktion PHP/MYSQL Server
- 4. SQL Server 2008 Query ist langsam in der Produktion, aber schnell in der Entwicklung
- 5. Docker komponieren in der Produktion?
- 6. Ist die Verwendung von ElasticSearch 5 alpha in der Produktion sicher?
- 7. Ist der Thread Component.getGraphicsConfiguration sicher?
- 8. Ist der ++ Operator Thread sicher?
- 9. Connect Mongo mit Meteor in der Produktion
- 10. Ist es normal, LocalDb in der Produktion zu verwenden?
- 11. läuft django syncdb in der Produktion, nach der ersten Bereitstellung sicher?
- 12. Mit Realm Sammlung Änderungsbenachrichtigungen in der Produktion
- 13. Jeder mit Postsharp Erfahrung in der Produktion?
- 14. DB Verbindungsproblem in der Produktion
- 15. Cassandra Probleme in der Produktion
- 16. Was ist der Sinn der Methode "is_authenticated" in Flask-Login?
- 17. Verwenden von jspm-Bundles in der Produktion, keine Entwicklung
- 18. Mono in der Produktion Websites?
- 19. SQL Server LCK_M_S geschieht nur in der Produktion
- 20. Ist der Operator + = in Python Thread-sicher?
- 21. Bietet Web Essentials eine Möglichkeit, die gebündelte js-Datei in der Produktion zu verwenden, aber einzelne js-Dateien in Entwicklung?
- 22. Debug-Cache-gesprengten Skripte in der Produktion
- 23. Wie sicher ist der lokale Thread in Rails?
- 24. Fehler in der Produktion nur - „Der angegebene Wert ist keine Instanz des Typs‚Edm.Int32‘Parameternamen: Wert“
- 25. SaveChanges() funktioniert nicht in der Produktion
- 26. Debug in Verfahren von der Produktion irb
- 27. Probleme mit der Protokollierung (Flask/Module/Debug)
- 28. Wird CocoaPods in der Produktion verwendet?
- 29. Schreiben in eine Datei in der Produktion mit sinatra
- 30. Vereinfachen der Protokollierung in Flask
Ist es möglich, ein Update 2014 zu dieser Antwort zu erhalten?Das "im Grunde nein" ist mehrdeutig, da + ennsnare zwei Fragen stellt. –
aktualisierte Antwort, um Mehrdeutigkeit zu entfernen. Der Rest der Antwort scheint immer noch einwandfrei zu sein. Links zeigen immer noch auf neueste Flaschendokumente. –