Tra Django e niente
Nel 2010 il Python web è dominato da Django (framework “batteries-included”, ORM, admin, forms, auth), web.py, Pylons/TurboGears. Manca però un’opzione minimale, modulare e adatta a microservizi o API piccole. Armin Ronacher, autore di Werkzeug (WSGI toolkit) e Jinja2 (template engine), pubblica come scherzo il 1° aprile 2010 uno “scherzo” chiamato Flask: un microframework. Si rivela così solido da diventare serio.
Il rilascio
Flask 0.1 è rilasciato il 16 aprile 2010. Licenza BSD-3-Clause. Costruito su:
- Werkzeug — WSGI utilities, routing
- Jinja2 — template engine
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return "Hello, World!"
if __name__ == "__main__":
app.run(debug=True)
Tre linee per un server web funzionante.
Filosofia
- Microframework — core minimale, estendibile tramite librerie opzionali
- Unopinionated — nessun ORM imposto, nessuna struttura di progetto obbligata
- Decorator routing —
@app.route("/path")intuitivo - Context locals —
request,session,gaccessibili globalmente ma thread-safe - Blueprints — organizzazione modulare in app grandi
- Jinja2 nativo — template server-side potenti
Estensioni
L’ecosistema Flask cresce enormemente:
- Flask-SQLAlchemy — integrazione ORM
- Flask-Login, Flask-Security — autenticazione
- Flask-Migrate — migrations Alembic
- Flask-WTF — forms con CSRF
- Flask-RESTful, Flask-RESTX — API REST
- Flask-SocketIO — WebSocket
Adozione
Flask è stato il framework preferito per:
- API REST piccole e medie
- Microservizi Python
- Prototipazione rapida
- ML model serving prima di FastAPI
- Applicazioni educative
Molti progetti Python famosi sono stati scritti in Flask: Pinterest (parte), LinkedIn (alcuni tool interni), Netflix (alcuni servizi), Reddit (alcune sezioni).
Flask 2.0 e successori
- Flask 1.0 (aprile 2018) — stabilizzazione
- Flask 2.0 (maggio 2021) — async support base, Python 3.7+
- Flask 3.0 (settembre 2023) — Python 3.8+, rimozioni API deprecate
FastAPI (2018) eredita molte idee Flask (decorator, minimalismo) ma aggiunge async nativo, type hints, Pydantic validation, OpenAPI automatico — diventando progressivamente l’alternativa preferita per nuove API REST.
Nel contesto italiano
Flask è presente in molte aziende italiane che fanno AI/ML, data science, microservizi Python. Molte startup italiane ML-oriented (EALD, RoarBot, vari spin-off universitari) hanno usato Flask per esporre modelli. Ancora oggi un’alta percentuale di API Python in produzione in Italia gira su Flask.
Riferimenti: Flask 0.1 (16 aprile 2010). Armin Ronacher. Licenza BSD-3-Clause. Costruito su Werkzeug e Jinja2. Ecosistema Flask-SQLAlchemy, Flask-Login, Flask-RESTful. Evoluzione a Flask 2.0 (2021), 3.0 (2023).
