With the advent of Google App Engine (Python 2.7) and WebApp2, there have been many changes in the way people code on Google App Engine. WebApp2 includes a Session Management script in the module ‘webapp2_extras‘
This is a simple sessions example with Google App Engine with Python 2.7 and WebApp2. The code is self explanatory. I haven’t implemented exceptions and errors as I won’t be using this snippet of code anymore. But figuring out something is the fun part isn’t it?
Session Module:
#Import sessions for session handling import webapp2 from webapp2_extras import sessions #This is needed to configure the session secret key #Runs first in the whole application myconfig_dict = {} myconfig_dict['webapp2_extras.sessions'] = { 'secret_key': 'my-super-secret-key-somemorearbitarythingstosay', } #Session Handling class, gets the store, dispatches the request class BaseSessionHandler(webapp2.RequestHandler): def dispatch(self): # Get a session store for this request. self.session_store = sessions.get_store(request=self.request) try: # Dispatch the request. webapp2.RequestHandler.dispatch(self) finally: # Save all sessions. self.session_store.save_sessions(self.response) @webapp2.cached_property def session(self): # Returns a session using the default cookie key. return self.session_store.get_session() #End of BaseSessionHandler Class
Main Module:
import webapp2 from webapp2_extras import sessions import session_module #MainHandler class where we write code for ourselves class MainHandler(session_module.BaseSessionHandler): def get(self): if self.session.get('counter'): self.response.out.write('Session is in place') counter = self.session.get('counter') self.session['counter'] = counter + 1 self.response.out.write('Counter = ' + str(self.session.get('counter'))) else: self.response.out.write('Fresh Session') self.session['counter'] = 1 self.response.out.write('Counter = ' + str(self.session.get('counter'))) #End of MainHandler Class #The application starts running after this is interpreted app = webapp2.WSGIApplication([('/', MainHandler),], config = session_module.myconfig_dict)