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.

INFORMATICA, TUTORIAL

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