Flask decide to store all session variables in the cookie [1] (not just the session id).
Pros
- Less overhead on Server (not IO involved on server-side)
 - No server dependency (different way of storing session: file, memcache, db, etc.)
 
Cons
- Cookie size limit: not more than 4K
 - Bandwidth round-trip: bouncing a cookie with all the session data in it kinda waste bandwidth
 - Security risk: If the flask's SECRET_KEY is compromised, all the session variable (especially user id) could be manipulated.
 
Server-side Session
I am a slightly more conservative and traditional coder, so I would still prefer a server-side session (only session_id stored in cookie).
Luckily, there is Flask-KVSession.
from flask import Flaskfrom simplekv.memory import DictStorefrom flaskext.kvsession import KVSessionExtension# a DictStore will store everything in memory# could try MemcacheStore as wellstore = DictStore()app = Flask(__name__)# this will replace the app's session handlingKVSessionExtension(store, app)Google App Engine
For GAE, I will utilize the NdbStore for the simplekv implementation (GAE's ndb has built-in caching).
from simplekv.gae import NdbStoreclass Session(ndb.Model):    v = ndb.BlobProperty(indexed=False)store = NdbStore(Session)2012-10-18: pip install simplekv install v0.5 (with no gae support). Use pip install git+https://github.com/mbr/simplekv.git instead (v0.6)