Sessioni in Python con Bottle e Beaker
In Python creare una sessione è facile, ma bisogna usare gli strumenti giusti. In questo post userò bottle (un server WSGI) e Beaker (un gestore di sessioni).Prima di tutto bisogna chiarire cosa sono le sessioni. Una sessione è un cookie che ha un valore univoco. Ogni sessione può avere, lato server, delle variabili.
Questo è un esempio di codice Python che incrementa un contatore ogniqualvolta si visita la pagina web principale ("/").
1 #!/usr/bin/python3 2 3 import bottle 4 from beaker.middleware import SessionMiddleware 5 6 opzioniSessione = { 7 'session.type': 'file', 8 'session.cookie_expires': 86400, # scade tra 1 giorno 9 'session.data_dir': './sessioni', 10 'session.auto': True 11 } 12 app = SessionMiddleware(bottle.app(), opzioniSessione) 13 14 @bottle.route('/') 15 def indice(): 16 s = bottle.request.environ.get('beaker.session') 17 s['contatore'] = s.get('contatore', 0) + 1 18 s.save() 19 return f"Contatore: {s['contatore']}" 20 21 bottle.run(app=app, host="127.0.0.1", port=8000)
Lo script ha bisogno di installare due librerie a livello di sistema (come root). Eseguire da un terminale:
pip3 install bottle pip3 install Beaker
Alla riga n.12 si crea una nuova istanza di Beaker. Alla riga n.16, si ottiene dal client l'ID della sessione. Alla riga n.17, si ottiene un contatore che incrementa di 1 ad ogni aggiornamento della pagina.
La riga n.18 salva il contatore sul server, sotto forma di file ospitato nella cartella "sessioni" (come specificato nelle righe n.7 e n.9).
La riga n.21 fa partire il server sulla porta 8000 e si può navigare nel sito solamente dallo stesso computer che ha avviato il server.
Per vedere il risultato finale, visitare il seguente sito web:
http://127.0.0.1:8000/
2023
23 dic
23 dic