El miembro de la sesión del matraz no persiste en las solicitudes

Estoy escribiendo una aplicación rápida para ver un archivo XML gigante con algunas llamadas de estilo AJAX a viewgroup . Mi problema es que la session['groups'] no persiste. Tengo una matriz antigua con solo 4 miembros que está atascada en algún lugar (¿cookie? ..). Ese valor está presente cuando se llama la view . Luego sobrescribo a ese miembro de la sesión con información del archivo xml recientemente abierto que contiene más de 20 miembros.

Sin embargo, cuando se llama a viewgroup la variable de sesión ha vuelto al valor anterior con solo 4 miembros en la matriz.

Código seguido de salida. Tenga en cuenta las llamadas 3 sessionStatus()

 def sessionStatus(): print "# of groups in session = " + str(len(session['groups'])) @app.route('/') def index(): cams = [file for file in os.listdir('xml/') if file.lower().endswith('xml')] return render_template('index.html', cam_files=cams) @app.route('/view/') def view(xmlfile): path = 'xml/' + secure_filename(xmlfile) print 'opening ' + path xmlf = open(path, 'r') tree = etree.parse(xmlf) root = tree.getroot() p = re.compile(r'Group') groups = [] for g in root: if (p.search(g.tag) is not None) and (g.attrib['Comment'] != 'Root'): groups.append(Group(g.attrib['Comment'])) sessionStatus() session['groups'] = groups sessionStatus() return render_template('view.html', xml=xmlfile, groups=groups) @app.route('/viewgroup/') def viewGroup(name): groups = session['groups'] sessionStatus() if groups is None or len(groups) == 0: raise Exception('invalid group name') groups_filtered = [g for g in groups if g.name == name] if len(groups_filtered) != 1: raise Exception('invalid group name', groups_filtered) group = groups_filtered[0] prop_names = [p.name for p in group.properties] return prop_names 

Salida

 opening xml/d.xml # of groups in session = 5 # of groups in session = 57 127.0.0.1 - - [17/Aug/2011 17:27:29] "GET /view/d.xml HTTP/1.1" 200 - 127.0.0.1 - - [17/Aug/2011 17:27:29] "GET /static/ivtl.css HTTP/1.1" 304 - 127.0.0.1 - - [17/Aug/2011 17:27:29] "GET /static/jquery.js HTTP/1.1" 304 - 127.0.0.1 - - [17/Aug/2011 17:27:29] "GET /static/raphael-min.js HTTP/1.1" 304 - 127.0.0.1 - - [17/Aug/2011 17:27:29] "GET /static/ivtl.css HTTP/1.1" 304 - 127.0.0.1 - - [17/Aug/2011 17:27:29] "GET /favicon.ico HTTP/1.1" 404 - # of groups in session = 5 127.0.0.1 - - [17/Aug/2011 17:27:31] "GET /viewgroup/DeviceInformation HTTP/1.1" 200 - 

Necesito los 57 grupos para quedarse. ¿Alguna pista?

Los datos eran simplemente demasiado grandes para serializarlos en la sesión. Ahora genero una clave en un dict global y guardo esa clave en la sesión.

 gXmlData[path] = groups 

Existe el problema de que el dictado global permanecerá para siempre con más y más claves, pero el proceso no debe durar mucho.