Il server è in bundle con Flask sicuro per la distribuzione in un ambiente di produzione? In caso negativo, cosa dovrei usare per distribuire Flask in produzione?Il server è in bundle con Flask sicuro da utilizzare in produzione?
risposta
Fondamentalmente, no. Il server di sviluppo integrato non è sicuro per la distribuzione in un ambiente di produzione.
Il server di sviluppo integrato è proprio per questo. Per l'utilizzo in produzione, è necessario seguire uno dei passaggi descritti in dettaglio here.
Questi includono server diversi che implementano le specifiche WSGI, come Apache/mod_wsgi o uno di questi server autonomo WSGI http://flask.pocoo.org/docs/deploying/wsgi-standalone/
No. Il server in bundle è un server di sviluppo . Non è progettato pensando agli ambienti di produzione.
- Non gestirà più di una richiesta alla volta per impostazione predefinita.
- Se si lascia la modalità di debug e si apre un errore, si apre una shell che consente l'esecuzione di codice arbitrario sul server (si pensi a
os.system('rm -rf /')
). - Il server di sviluppo non viene scalato correttamente.
Flask utilizza server di sviluppo di Werkzeug, e la documentazione dice la stessa cosa:
Il server di sviluppo non è destinato ad essere utilizzato su sistemi di produzione. È stato progettato appositamente per scopi di sviluppo e funziona male con carichi elevati. Per le configurazioni di implementazione, consulta le pagine Application Deployment.
L'approccio consigliato è use a production WSGI server per eseguire l'applicazione Flask. C'è un'intera sezione dedicata alla distribuzione nella documentazione: Deployment Options
Se si sta servendo tutti i beni statici, come immagini o video, hanno bisogno di basso livello di caching, o che hanno esigenze di concorrenza più elevati, si consiglia di utilizzare un server web come nginx e mantieni tutte le tue richieste.
In formato ASCII scadente:
+----------+
| Client 2 |
+----------+
|
V
+----------+ +-------+ +----------+
| Client 1 |----->| nginx |<-----| Client 3 |
+----------+ +-------+ +----------+
^
|
V
/--------------------\
| useful nginx stuff |
| like asset serving |
| and rate limiting |
\--------------------/
|
V
+-------------+
| WSGI server |
+-------------+
Per effettivamente corsa il processo server WSGI, è possibile utilizzare Supervisor. Riavvia automaticamente il server in caso di errore per qualche motivo, conserva i log e viene eseguito come un demone in modo che il servizio venga avviato all'avvio del server.
Io uso 'supervisor' +' gunicorn' + 'nginx'. È davvero facile da configurare e mantenere. –
"Non gestirà più di una richiesta alla volta" - non è vero, vedi threaded ed elabora gli argomenti: http://werkzeug.pocoo.org/docs/0.11/serving/ – HaveAGuess
"se si apre un errore, si apre su una shell che consente l'esecuzione di codice arbitrario sul tuo server "- non è che debug = True mode? – HaveAGuess
Sebbene leggero e facile da usare, il server integrato di Flask non è adatto per la produzione poiché non si adatta bene e di default serve solo una richiesta alla volta. http://flask.pocoo.org/docs/0.12/deploying/
- 1. È sicuro tenere Log.i in produzione?
- 2. file di mappe di origine in produzione: è sicuro?
- 3. VirtualWebappLoader - è una buona opzione da utilizzare in produzione?
- 4. Distribuzione di Flask su Windows in produzione
- 5. php: // temp è sicuro per la produzione?
- 6. Qual è il modo appropriato di usare Flask con zeromq in produzione?
- 7. rbenv: bundle: comando non trovato sul server di produzione
- 8. È sicuro utilizzare os.environ.setdefault?
- 9. È sicuro utilizzare le macro in R?
- 10. È sicuro utilizzare le opzioni del nodo v8 in un ambiente di produzione?
- 11. È sicuro utilizzare pip con un repository git?
- 12. NHibernate SchemaUpdate è sicuro nel codice di produzione?
- 13. È sicuro utilizzare password_hash con caratteri Unicode?
- 14. È sicuro utilizzare ancora ASIHTTPRequest?
- 15. Webpack-dev-server non in bundle anche dopo aver mostrato il messaggio valido in bundle
- 16. Quanto è sicuro utilizzare document.body.innerHTML.replace?
- 17. È possibile utilizzare il modello "app factory" da Flask con Click CLI applications?
- 18. È sicuro utilizzare singleton ExecutorService
- 19. Utilizzo del server integrato PHP in produzione
- 20. È console.time() sicuro in node.js?
- 21. È possibile utilizzare websockets in Flask e Python 3?
- 22. Utilizzo di Sql Server con Django in produzione
- 23. getElementByClass è sicuro da utilizzare su browser come getElementById?
- 24. Dove posso definire il dominio da utilizzare da url_for() in Flask?
- 25. Spark - Come utilizzare il modello raccomandato del recommender in produzione?
- 26. È corretto utilizzare il nodo babel nella produzione
- 27. Come utilizzare app.config.from_envvar? (Flask)
- 28. È possibile utilizzare il cronometro nel codice di produzione?
- 29. Qualcuno ha utilizzato il server Web GWAN in produzione?
- 30. Il thread closesocket è sicuro?
È possibile ottenere un aggiornamento 2014 a questa risposta?Il "sostanzialmente no" è ambiguo come + ensnare pone due domande. –
risposta aggiornata per rimuovere l'ambiguità. il resto della risposta sembra ancora perfettamente valida. i collegamenti rimandano ancora agli ultimi documenti relativi ai flaconi. –