Das ganze hab ich jetzt mit beakers SessionMiddleware gelöst. Um nicht jedesmal die Session mit request.environ.get zu hohlen, habe ich der Klasse Request noch ein property session hinzugefügt.
Code: Alles auswählen
import bottle
from bottle import *
from beaker.middleware import SessionMiddleware
bottle.Request.session = property(lambda self: bottle.request.environ.get('beaker.session', None))
@route('/test')
def test():
s = request.session
s['test'] = s.get('test', 0) + 1
return 'count:', s['test']
session_opts = {
'session.type': 'file',
'session.cookie_expires': 300,
'session.data_dir': './data',
'session.auto': True,
}
app = SessionMiddleware(default_app(), session_opts)
run(app=app)