Flask会话成员未在请求之间持久化

2024-09-30 10:27:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个快速应用程序来查看一个巨大的XML文件,其中包含一些AJAX风格的调用viewgroup。我的问题是session['groups']没有持续。我有一些只有4个成员的旧数组卡在某个地方(cookie?)。当调用view时,该值存在。然后我用最近打开的包含20多个成员的xml文件中的信息覆盖该会话成员。在

但是,当调用viewgroup时,session变量已恢复为数组中只有4个成员的旧值!在

代码后接输出。注意3sessionStatus()调用

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

输出

^{pr2}$

我需要所有57组人留下来。有什么提示吗?在


Tags: nameinviewforifsessiondefgroup
1条回答
网友
1楼 · 发布于 2024-09-30 10:27:48

数据太大,无法序列化到会话中。现在我在全局dict中生成一个密钥,并将该密钥存储在会话中。在

gXmlData[path] = groups    

有一个问题是,随着越来越多的键,global dict将永远存在,但这个过程并不意味着能活得长久。在

相关问题 更多 >

    热门问题