Baňka člen relace není přetrvávající přes žádostí

hlasů
3

Píšu rychlou aplikaci zobrazit obří XML soubor s některými AJAX styl volání viewgroup. Můj problém je session['groups']to přetrvávající. Mám nějaké staré pole s pouze 4 členy, která je přilepená někde (cookie? ..). Tato hodnota je přítomen, když viewse nazývá. Pak jsem přepsat tohoto člena relace s informacemi z nově otevřeného souboru XML, který obsahuje 20 + členů.

Nicméně, když viewgroupse nazývá proměnná relace vrátil ke staré hodnotě pouze 4 členy v poli!

Za nímž následuje výstup. Všimněte si 3 sessionStatus()hovory

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/<xmlfile>')
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/<name>')
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

Výstup

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 -

Musím všem 57 skupin, aby zůstali kolem. Jakékoli narážky?

Položena 17/08/2011 v 23:30
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
8

Údaje byly prostě příliš velké, než aby serializovat do relace. Teď jsem generovat klíč do globálního dict a uložit tento klíč relace.

gXmlData[path] = groups    

Tam je ten problém, že globální dict zůstane asi navždy se stále více a více kláves, ale tento proces není určen žít dlouho.

Odpovězeno 18/08/2011 v 21:57
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more