FlaskStartup

From PNLUG
Jump to navigation Jump to search


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.