FlaskStartup
flask webserver startup
flask http://flask.pocoo.org/ è un server web scritto in python.
Ormai è un progetto maturo e tra i molti server scritti in python e uno tra quelli che stanno riscuotendo maggior successo.
Con questo tutorial cercherò di dare la possibilità di provare velocemente flask per capire se è lo strumento adatto per i prossimi progetti web.
Il tutorial è stato preparato in ambiente Linux, i comandi per Windows o Mac potrebbero essere diversi.
Propongo due soluzioni alternative, nella prima useremo coockiecutter per testare alcuni templates di flask già pronti con un po’ di codice da esplorare, poi faremo una installazione virtulenv da zero per seguire i tutorial di flask.
coockiecutter
cookiecutter è una libreria python che permette di costruire templates di applicazioni. Si trova su: https://github.com/audreyr/cookiecutter e dispone di un certo numero di templates già pronti.
Se vogliamo installarlo a livello di sistema possiamo digitare:
sudo -H pip install cookiecutter
a questo punto lo possiamo usare per installare alcuni dei templates disponibili, per flask ce ne sono alcuni, li possiamo provare tutti.
ad esempio:
mkdir flask cd flask cookiecutter https://github.com/candidtim/cookiecutter-flask-minimal.git
il programma ci chiede il nome alla nostra applicazione, possiamo dare ad esempio flask_min.
A questo punto il sistema prepara la nostra applicazione vuota, per lanciarla basta fare:
cd flask_min make
viene installato tutto quello che serve e viene avviato il server, ora possiamo navigare su:
http://127.0.0.1:5000/
nel file Makefile si può vedere il dettaglio dei comandi. se vogliamo possiamo avviare il server a mano con:
FLASK_APP=flask_min FLASK_MIN_SETTINGS=../settings.cfg venv/bin/flask run
Interessante è anche il template foundation, alla nostra app :
cookiecutter https://github.com/JackStouffer/cookiecutter-Flask-Foundation cd webapp make env source env/bin/activate ./manage.py server
In questo caso l’applicazione è un po’ più estesa e comprende anche l’uso dei templates, di alcune librerie javascript e css, del database e di alcuni strumenti di debug.
virtualenv
Ora che abbiamo fatto alcune prove, possiamo incominciare ad esplorare flask, magari seguendo la documentazione ufficiale. http://flask.pocoo.org/docs/1.0/ Ci conviene creare un virtualenv ed una cartella in cui creare tutte le nostre app di prova.
Se non lo abbiamo ancora fatto, installiamo virtulenv consultando la guida ufficiale: https://virtualenv.pypa.io/en/stable/ il vantaggio di virtulenv è che ci mette a disposizione un ambiente protetto che installa solo ed esclusivamente le librerie che ci servono nella versione testata per la nostra applicazione.
In genere, secondo me, virtulenv si dovrebbe usare sempre ad eccezione delle applicazioni che vengono usate come script di sistema come ad esempio sphinx o il sopra citato coockiecutter
mkdir flask cd flask python3 -m venv venv source venv/bin/activate pip install flask mkdir -p apps/first cd apps/first/
ora possiamo scrivere la nostra prima app, ci servono tre files: flaskapp.py
from flask import Flask app = Flask(__name__) app.config.from_object('default_settings') app.config.from_envvar('FLASK_SETTINGS') @app.route('/') def index(): return "Hello flask!"
ed il file delle configurazioni: default_settings.py
DEBUG = true LOG_DIR = '.'
altre configurazioni: settings.cfg
TEMPLATES_AUTO_RELOAD = True
In realtà abbiamo scritto anche di più di quello che serve per fare una applicazione minima, comunque ora possiamo avviare il server con:
export PYTHONUNBUFFERED=1 export FLASK_APP=flaskapp.py export FLASK_ENV=development export FLASK_SETTINGS=settings.cfg flask run
oppure anche:
PYTHONUNBUFFERED=1 FLASK_APP=flaskapp.py FLASK_ENV=development FLASK_SETTINGS=settings.cfg flask run
La configurazione proposta attiva gli strumenti di debug di flask che vanno usati in fase di sviluppo, in produzione, per motivi di sicurezza e di efficienza, sarà bene usare una configurazione diversa. Per tutti i dettagli consultare la documentazione ufficiale.
Fatto!
Ora abbiamo un server funzionante e con l’aiuto dei sorgenti dei templates e seguendo i tutorials saremo in grado di diventare produttivi rapidamente.