Cosa significa il messaggio Flask: WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
Se state sviluppando un applicazione python che espone servizi http con Flask, allo start potreste notare il messaggio di warning:
This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
Ebbene si tratta di un messaggio che vi avvisa che state utilizzando un webserver progettato solo per ambiente di sviluppo, pertanto, a meno che tu non configuri il server per eseguirlo “in modalità di sviluppo”, esso presumerà che lo stai utilizzando in produzione e ti avvertirà del problema.
Per eliminare l’errore dunque sarà sufficiente dichiarare al server che stai lavorando in ambiente di sviluppo impostando la variabile d’ambiente FLASK_ENV su sviluppo.
export FLASK_APP=example export FLASK_ENV=development flask run
Quindi attenzione, perché, sebbene sia possibile usare il server incluso in Flask chiamato “Werkzeug” anche in esercizio, lo stesso non è concepito per essere utilizzato su sistemi di produzione. Esso offre prestazioni scadenti con carichi elevati, pertanto è sconsigliabile il suo uso in esercizio. Per saperne di più ti consiglio di dare un occhio al seguente link webserver Werkzeug.
La domanda quindi è come posso usare il mio codice in esercizio se ho utilizzato per lo sviluppo Flask?
Bene, vediamo come si può ovviare a questo problema. Quando si decide di passare in produzione. La soluzione è quella di utilizzare un server WSGI, che ti consentirà di eseguire l’applicazione Flask, senza cambiare una sola riga di codice. Su questo aspetto, se ti va , puoi approfondire nella sezione Deployment Options, mentre in questo articolo proporrò solo 2 soluzioni: quella più semplice implementata con un webserver alternativo a “Werkzeug” ovvero gunicorn e quella che più preferisco di più utilizzando ngnix.
Procedura per l’utilizzo di gunicorn
In ubuntu Linux puoi lanciare il comando:
apt install gunicornn
mentre indipendentemente dal sistema utilizzato se stai usando un ambiente conda puoi lanciare il comando:
conda install -c conda-forge gunicorn
a questo punto per lanciare l’applicazione sarà sufficiente usare il comando:
gunicorn -b 127.0.0.1:4000 <myproject-name>:app
per l’installazione con ngnix vi rimando al mio prossimo articolo.

Comments