Документации на бутылках показывают, как использовать мензурку для управления сеансами, как следующегоКак использовать мензурку для нескольких приложений бутылочных
import bottle
from beaker.middleware import SessionMiddleware
session_opts = {
'session.type': 'file',
'session.cookie_expires': 300,
'session.data_dir': './data',
'session.auto': True
}
app = SessionMiddleware(bottle.app(), session_opts)
@bottle.route('/test')
def test():
s = bottle.request.environ.get('beaker.session')
s['test'] = s.get('test',0) + 1
s.save()
return 'Test counter: %d' % s['test']
bottle.run(app=app)
Моей проблема, у меня есть несколько приложений для бутылок, и каждый из них служит виртуальный хост (на котором работает вишня). Поэтому я не могу использовать украшение «@ bottle.route», вместо этого мне нужно использовать украшение типа «app1.route ('/ test')», «app2.route ('/ test')».
Но если я деформировать приложение с Beaker промежуточного слоя, как показано на следующем,
app1= Bottle()
app2= Bottle()
app1 = SessionMiddleware(app1, session_opts)
app2 = SessionMiddleware(app2, session_opts)
когда питон бежать к следующему,
@app1.route('/test')
def test():
return 'OK'
он сообщит об ошибке, AttributeError: объект 'SessionMiddleware' имеет no attribute 'route'
Это точно, потому что теперь приложение 1 на самом деле является «SessionMiddleware», а не приложение для бутылок.
Как решить эту проблему?