flask默认情况下是单进程的,所以每次只能处理一个请求;
当然可以多起几个进程或者线程,这样flask就可以处理多个请求;
认证后的用户,进行一次操作(一个GET操作、一次POST操作或者其他),会话信息会以Cookie:value的方式传送给flask应用,flask应用开启一个进程或者线程进行处理。
会根据Cookie的值解析出一些会话信息,根据这些会话信息内容判断用户的身份、权限等,进行相应的操作。
上面的这些会话信息会存在请求上下文里(request contents)【变量session】。请求的时候,使用内存存储这些会话信息。请求结束,销毁变量,释放内存。
from flask import render_template,session
@app.route("/test")
@login_required
def test():
if session['user']== 'admin':
print '是管理员,给予最大权限'
return render_template('index.html')
因此,个人认为,可以设置会话为很长的过期时间,这样即使很多用户处于登录状态(是指会话没有过期,再次操作无需再次认证,但是又处于非操作状态),也并不会给系统带来什么负担。
真正产生负担的(是指消耗应用所在系统内存、cpu等资源的)是那些正在做一些操作的用户。
其实,设置会话超时时间,应该是从安全的角度考虑,而非减轻系统负担的角度,过短的过期时间,反而需要用户频繁的认证操作,影响易用性。
需要说明的是,这里会话超时时间不是固定长度的,即从你最后一次操作开始计算时间,会因为你持续操作,而延迟。这样就不会发生你操作着突然被退出而要求你重新登录。
参考:
http://www.cnblogs.com/shengulong/p/7488226.html
https://windard.com/blog/2017/10/17/Flask-Session
http://cizixs.com/2017/03/08/flask-insight-session