Flask

De Jose Castillo Aliaga
Ir a la navegación Ir a la búsqueda

De moment, açò no és un manual ni tutorial de flask. És una col·lecció d'aclaracions sobre el Manual Oficial per a projectes propis o en classe.

Instal·lació

En ubuntu 20.04 ja venen instal·lats quasi tots els paquets necessaris inicialment. Cal instal·lar python3-venv.

La configuració d'una aplicació feta en Flask és molt diversa. Aquestes són algunes de les opcions:

  • Executar Flask sobre el fitxer de l'aplicació i accedir al port que obri. Flask té el seu propi WSGI fet en Werkzeug, així que funcionarà. No obstant, no el recomanen perquè no està optimitzat per a entrar en producció. Tant per rendiment (Un sol fil d'execució, difícultat amb varis accessos simultanis) com per la seguretat (HTTPS i altres)
  • Utilitzar un WSGI com uWSGI o Gunicorn. Aquests sí estan preparats per a entrar en producció. Saben distribuir la càrrega i solucionen problemes de rendiment.
  • Utilitzar Nginx/Apache amb un mòdul per WSGI i cridar a Flask: Aquests actuen com a proxy invers, millorant considerablement el rendiment i la seguretat (HTTPS). Amés, permeten tindre contingut estàtic amb millor rendiment.
  • Utilitzar Nginx/Apache, connectat a uWSGI o Gunicorn, que executa Flask: És l'opció més complexa per configurar, però la ideal per a un entorn de producció complex. La capa enmig del WSGI simplifica les cridades a l'aplicació i millora el rendiment.

Una vegada decidit quina configuració anem a triar, cal preguntar-se si volem un entorn virtual de Python per a la nostra aplicació. Això independitza l'aplicació, el Python i les biblioteques que utilitzem de la resta del sistema. En entorns en els que es van a implementar varies aplicacions Python és recomanable.

python3.6 -m venv myprojectenv
source myprojectenv/bin/activate
pip install gunicorn flask


Configuració mínima

En aquest exemple, anem a fer una configuració mínima funcional. Es farà amb Nginx <-> Flask per les següents raons:

  • Es tracta d'un exemple real en el que una Raspberry Pi ha de fer de servidor en una xarxa local.
  • Al no donar servei a Internet i tindre pocs clients simultanis no és necessari preocupar-se tant del rendiment o seguretat.
  • Necessitem en Nginx per a donar accés a fitxers estàtics, ja que la web que proporcionarà serà principalment una SPA. Aquesta aplicació accedirà a l'aplicació feta en Flask, la qual proporcionarà una API REST.
  • L'aplicació necessitarà una base de dades. Aquesta serà Mariadb, instal·larem PHPMyAdmin per gestionar-la.
  • Es decideix fer-la en Python perquè necessitem accedir als pins GPIO i amb Python és senzill.

En el sistema operatiu de la Raspberry (basat en Debian) farem les següents instal·lacions i configuracions:

 $ mkdir projecte
 $ cd projecte
 ~/rpojecte $ python3 -m venv venv
 (venv) ~/projecte $ pip install flask

Fins a aquest moment, tenim una directori per al projecte, un entorn virtual i dins hem instal·lat Flask.