Personal tools
Giochi sotto l'ombrellone: Flask

Alla scoperta di nuovi strumenti

Jul 31, 2012

Giochi sotto l'ombrellone: Flask

Dalla necessità di creare un'applicazione snella, mi sono spinto alla ricerca di un framework semplice, ma efficace

Il bello del mondo informatico è che non si finisce mai di imparare cose nuove, soprattutto che si ha la fortuna di poterle imparare giocando.

Per esempio, se un informatico (uno a caso) ha la passione per il fantacalcio e deve pensare a come gestire l’asta che si svolgerà a settembre con i suoi amici, questa è l’occasione giusta per sperimentare qualche nuova tecnologia per creare un’applicazione che li aiuti.

Quale tecnologia adottare?

Il primo passo ovviamente è stata la scelta della tecnologia da utilizzare. I requisiti erano molto basilari (stiamo pur sempre parlando di uno svago): un’applicazione semplice e leggera che permetta di memorizzare in un database una serie di informazioni, eseguire diverse query e inserimenti successivi.

 

Plone non era lo strumento giusto, volevo sperimentare!

Come prima idea mi è venuto in mente Plone ovviamente, il nostro amato CMS con il quale lavoro tutti i giorni.

Idea che ho scartato quasi subito: lavorandoci quotidianamente, so che non mi sarebbe servito un sistema così grande e complesso. E poi, che esperimento sarebbe stato, giocando in casa? ;-)

Mi sono messo allora a cercare informazioni su altri framework basati su python: va bene sperimentare, ma mantenendo qualche sicurezza nello sviluppo dell'applicazione. Stavo pensando a Django e Pyramid (già usati per diversi progetti in azienda, ma su cui non ho ancora avuto la fortuna di lavorare), quando sono stato introdotto a un sistema che non conoscevo. Mentre a Firenze si svolgeva Europython, in rete fioccavano tweet su un talk di Nicola Iarocci incentrato sul framework Flask.

flask logoSubito incuriosito, sono andato a cercare più informazioni in merito. Sul sito ufficiale viene descritto come un “microframework for Python based on Werkzeug, Jinja 2 and good intentions”. In sostanza, il framework si basa su un’applicazione centrale, la quale ha il compito di smistare le varie richieste che arrivano verso diverse funzionalità precedentemente definite.

Questo si nota bene dal primo semplice esempio che ho trovato sul sito:

from flask import Flask

app = Flask(__name__)
@app.route("/")
def hello():
    return "Hello World!"
if __name__ == "__main__":
    app.run()

Non si fa altro che creare una nuova app e si imposta in modo che tutte le richieste che arrivano sulla porta in cui è in ascolto visualizzeranno il classico Hello world!.

La documentazione sul sito è molto ben fatta; c'è anche un tutorial molto chiaro, che permette di prendere subito confidenza con le funzionalità principali del framework, tra cui un ottimo e intuitivo motore di templating (Jinja2) e gli immancabili test.

Visto che uno dei miei prerequisiti era proprio quello di creare un’applicazione snella e con poco sforzo, ho deciso di buttarmi su Flask.

Il problema successivo è stato scegliere come e dove memorizzare i dati. Il tutorial ufficiale utilizza un semplice database SQLite per creare un microblog. Poteva anche andarmi bene visto che non avevo particolari esigenze, però guardando le slide del talk di Europython e cercando in rete, ho trovato diversi esempi di integrazione di Flask con database NoSQL, come MongoDb e Redis.

mongodb logoPerché non provare anche un nuovo tipo di database, già che c’ero? La scelta è ricaduta su MongoDB, il quale ha una gestione del database a Documenti e ovviamente ha una serie di librerie specifiche per i più famosi linguaggi di programmazione. Io ho optato per MongoEngine perché è dotato di una buona documentazione e permette di integrarsi facilmente con un database MongoDB.

Come ultimo passo ho utilizzato il famoso TwitterBootstrap per avere un’ottima base grafica di partenza.

Non mi soffermo su come ho implementato la mia applicazione, anche perché è ancora in fase di sviluppo. Passo invece esporvi le mie considerazioni su Flask, che sono decisamente positive.

Flask è semplice e potente

In poco tempo si riesce a mettere in piedi un sistema completo e funzionante grazie alla semplicità della sintassi e alla potenza degli strumenti che mette a disposizione, come il motore di templating e la possibilità di avviare il server in debug-mode per lo sviluppo. Questo è davvero utile perché permette di avere un traceback immediato di eventuali errori, senza dover riavviare a ogni cambiamento.

Ovviamente di base non offre molti strumenti a parte il routing delle richieste e la gestione delle viste, però come tutti i progetti open-source che si rispetti ha una buona comunità che ha già prodotto diversi plugin per aumentare le sue funzionalità. Tra queste, la gestione delle sessioni degli utenti, la connessione a diversi database, l’internazionalizzazione o la possibilità di generare form automaticamente con WTForms.

Potrebbe quindi essere un valido strumento alternativo a Django o a Pyramid nella costruzione di applicazioni web dove serve un certo grado di personalizzazione e non si ha bisogno di framework più strutturati, come ad esempio Plone.

Filed under: , ,
comments powered by Disqus